Mailinglisten-Archive |
Hallo Kar-Wing, Kar-Wing Lau > Ich weiss, dass man Java-Servlets mit PHP aufrufen kann. Ist es > auch möglich > Parameter zu übergeben und auch vor allem wieder auszulesen, so wie es bei > exec() z.B. mit CGI funktioniert? Will man mit Servlets und PHP arbeiten, ist folgende Vorgehensweise empfehlenswert : 1. php mit der option --with-servlet kompilieren . Anstelle der gewohnten Webserver-API wird php mit einer Servlet-API bereitgestellt. 2. Das so entstandene phpsrvlt.jar kann direkt in den CLASSPATH gestellt werden, und wird unter java als net.php.servlet zur Verfügung gestellt . Das heisst: man kann direkt aus java PHP-Skripte bearbeiten . 3. Dieses "PHP über Java" kann man in einer normalen Servlet-Engine wie etwa Apaches Tomcat verwenden . Mit der im PHP-Source in /sapi/servlet/web.xml ist auch gleiche eine Beispiel-Konfiguration dabei, die das Bearbeiten von .php-Files über eine Servlet-Engine erlaubt. 4. Java-Klassen und -Objekte können wie bei ext/java mit einfachem Overloading benutzt werden, also z.B. $xslprocessorfactory= new java("org.apache.xalan.xslt.XSLTProcessorFactory"); $xslprocessor=$xslprocessorfactory->getProcessor(); für das, was in Java so hiesse : import org.apache.xalan.xslt.XSLTProcessorFactory; import org.apache.xalan.xslt.XSLTProcessor; ... XSLTProcessor processor = XSLTProcessorFactory.getProcessor(); 5. Warum, in Gottes Namen, nicht einfach etc/java benutzen und den ganzen Servlet-Kram weglassen ? Die Benutzung von ext/java führt dazu, dass jedes PHP-Skript eine komplette JVM hochfährt - und die kann unter Umständen einige MB gross sein . Daneben bieten Servlet-Engines in der Regel Loadbalancing-Mechanismen wie ajpv12 an . Diese Mechanismen werden natürlich auch vom php-Servlet benutzt . > Des weiteren haben wir die Frage von dem Java-Team reinbekommen, ob PHP > multithread-fähig ist. Ist also PHP unter NT und unter Linux > multithread-fähig? Wir wollen beides wegen der hohen zu erwartenden Last > evtl. auf einen NT- oder Linux Cluster schieben, zumindest aber auf > Multiprozessor-Systeme und dort optimale Lastverteilung erzielen. Spötter würden sagen: nein, PHP ist nicht Multithreading-fähig, weil so schon performant ist. Leider gibt es in PHP wirklich kein Multi- threading, und auch eine Servletvariante bietet hier keine Änderung . Immerhin gibt es seit einer Woche mit Ticks die Möglichkeit, PHP-Funktionen im Hintergrund laufen zu lassen . Die Fähigkeiten der Servlet-Engine, die Last über einen Cluster zu verteilen, bleibt auch bei PHP erhalten . Damit fehlt zwar das Threading , aber in Summa sollte es gut über 19"-Racks skalieren . (Es fehlt leider immer noch jemand, der das mal ausprobiert ;-) ). Grüße, johann
php::bar PHP Wiki - Listenarchive