webForumDet fria alternativet

Trigga igång php-skript med Java?

8 svar · 300 visningar · startad av Poppe25

Poppe25Medlem sedan apr. 2002278 inlägg
#1

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?

SPiNMedlem sedan mars 20005 832 inlägg
#2

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.

Poppe25Medlem sedan apr. 2002278 inlägg
#3

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

ViktorMedlem sedan aug. 20021 710 inlägg
#4

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

Poppe25Medlem sedan apr. 2002278 inlägg
#5

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?

SPiNMedlem sedan mars 20005 832 inlägg
#6

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

Poppe25Medlem sedan apr. 2002278 inlägg
#7

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å?

Poppe25Medlem sedan apr. 2002278 inlägg
#8

Hur veta om URLConnection() fungerar?

Hur kan jag försäkra mig om att connect()-metoden hos ett objekt av URLConnection() fungerar?

Please....

LimeMedlem sedan sep. 2001837 inlägg
#9

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

Genererad på 369 ms · cache AV · v20260730165559-full.f96bc7eb