Jag har ett phpskript som jag skulle vilja trigga igång med program skrivet i java. Någon som har något bra förslag på hur det skulle gå till?
Trigga igång php-skript med Java?
8 svar · 300 visningar · startad av Poppe25
Jäpp. Du vill alltså bara köra ditt PHP-script via ett Java-program på den lokala datorn?
public class RunPHP {
public static void main( String[] args ) {
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec( "C:\\PHP\\php.exe C:\\sökväg\\till\\fil.php" );
/* För att se vad som genereras, så läser du av så här: */
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( process.getInputStream() ) );
String str = "";
while( ( str = bufferedReader.readLine() ) != null )
System.out.println( str );
bufferedReader.close();
} catch( Exception e ) {
System.err.println( "Felmeddelande: " + e.getMessage() );
}
}
}
Bör fungera.
Dunder!
Om jag vill få det att exekvera php-skriptet var 20:e minut plus att det ligger på en server, hur skulle det då se ut?
Tack för hjälp så långt
En lösning,
public class RunPHP {
public static void main( String[] args ) {
try {
Runtime runtime = Runtime.getRuntime();
try
{
while(true)
{
Process process = runtime.exec( "C:\\PHP\\php.exe C:\\sökväg\\till\\fil.php" );
/* För att se vad som genereras, så läser du av så här: */
BufferedReader bufferedReader = new BufferedReader( new InputStreamReader( process.getInputStream() ) );
String str = "";
while( ( str = bufferedReader.readLine() ) != null )
System.out.println( str );
bufferedReader.close();
//Vänta 20 minuter och kör sedan koden igen
Thread.sleep(1200000);
}
}
catch(InterruptedException ie)
{
}
} catch( Exception e ) {
System.err.println( "Felmeddelande: " + e.getMessage() );
}
}
}
Annars kan du köra med crontab om du kör på en linux server eller shemalagda aktiviteter eller vad det nu heter i Windows. Då startar programmet vid vissa intervall.
/Viktor
Tack, programmet fungerar utmärkt. Hur gör jag för att starta det på en server? Måste jag vara administratör för servern eller finns det något sätt att göra det från klienten om man har tillgång till katalogerna?
Du kan köra det från din egen burk också, men då måste man skriva om det:
import java.net.URL;
import java.net.URLConnection;
public class RunPHP {
public static void main( String[] args ) {
try {
URL url = new URL( "http://server.se/fil.php" );
URLConnection http = new URLConnection( url );
while( true ) {
http.connect();
Thread.sleep( 1200000 );
}
} catch( Exception e ) {
System.err.println( "Felmeddelande: " + e.getMessage() );
}
}
}
Det bör fungera. Det finns ingen close()-metod för URLConnection, så jag antar att den stänger sig själv när datan har laddats in?! :q
Den sista klassen som Spin hade vänligheten att utveckla får jag inte att fungera, förmodligen för att jag har en brandvägg installerad. Det jag saknar är metoder att se om uppkopplingen fungerar och vad som är fel om den inte gör det.
URL url = new URL( "http://server.se/fil.php" );
URLConnection http = new URLConnection( url );
Om denna uppkoppling fungerar eller inte är det jag vill ha reda på. Hur går man till väga då?
Hur veta om URLConnection() fungerar?
Hur kan jag försäkra mig om att connect()-metoden hos ett objekt av URLConnection() fungerar?
Please....
RTFM....
public abstract void connect()
throws IOExceptionOpens a communications link to the resource referenced by this URL, if such a connection has not already been established.
If the connect method is called when the connection has already been opened (indicated by the connected field having the value true), the call is ignored.URLConnection objects go through two phases: first they are created, then they are connected. After being created, and before being connected, various options can be specified (e.g., doInput and UseCaches). After connecting, it is an error to try to set them. Operations that depend on being connected, like getContentLength, will implicitly perform the connection, if necessary.
Throws:
IOException - if an I/O error occurs while opening the connection.
See Also:
connected