Nasıl Java bir PHP çalıştırabiliriz?

3 Cevap java

I have a php script which is executed over a URL. (e.g. www.something.com/myscript?param=xy)

Bu komut bir tarayıcıda çalıştırıldığında bu kodlu bir sonuç, negatif veya pozitif bir sayı verir.

Java kodu (J2EE) bu komut dosyasını çalıştırmak ve bazı nesne bu sonucu depolamak istiyor.

I'm trying to use httpURLConnection for that. I establish a connection but can not fetch the result. I'm not sure if I execute the script at all.

3 Cevap

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL yahoo = new URL("http://www.yahoo.com/");
        URLConnection yc = yahoo.openConnection();
        BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                yc.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }
}

Bu pasajı resmi Java öğretici olduğunu (http://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.html). Bu size yardımcı olacaktır.

J2EE app PHP komut dosyası üzerinde aynı sunucuda dağıtıldığında ise, sen de böyle bağımsız bir süreç olarak doğrudan yürütebilirsiniz:

  public String execPHP(String scriptName, String param) {
    try {
      String line;
      StringBuilder output = new StringBuilder();
      Process p = Runtime.getRuntime().exec("php " + scriptName + " " + param);
      BufferedReader input =
        new BufferedReader
          (new InputStreamReader(p.getInputStream()));
      while ((line = input.readLine()) != null) {
          output.append(line);
      }
      input.close();
    }
    catch (Exception err) {
      err.printStackTrace();
    }
    return output.toString();
  }

Sen bir süreç oluşturma ve yürütme yükü ödeyecek, ancak bir ağ bağlantısı komut dosyası çalıştırmak için gereken her zaman oluşturma olmayacak. Ben çıktı boyutuna bağlı olarak, bir başka daha iyi performans olacağını düşünüyorum.

İlgili bir not, bir java programı bir php komut dosyası çalıştırmak için çalışıyorsanız, size aşağıdaki kodu sevk edebilir

        Process p = Runtime.getRuntime().exec("php foo.php");

        p.waitFor();

        String line;

        BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        while((line = error.readLine()) != null){
            System.out.println(line);
        }
        error.close();

        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while((line=input.readLine()) != null){
            System.out.println(line);

        }

        input.close();

        OutputStream outputStream = p.getOutputStream();
        PrintStream printStream = new PrintStream(outputStream);
        printStream.println();
        printStream.flush();
        printStream.close();