phpbar.de logo

Mailinglisten-Archive

[php] Java-Servlets und multithreading in PHP

[php] Java-Servlets und multithreading in PHP

Johann-Peter Hartmann hartmann_(at)_freecharts.de
Wed, 6 Sep 2000 19:09:01 +0200


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