phpbar.de logo

Mailinglisten-Archive

[php] ANKUENDIGUNG: PHP 4.0 Beta 1 erschienen !

[php] ANKUENDIGUNG: PHP 4.0 Beta 1 erschienen !

Ralf Geschke ralf_(at)_kuerbis.org
Tue, 20 Jul 1999 03:23:54 +0200


Hallo !

Zwar bin ich kaum praedestiniert fuer eine solche Nachricht, aber
dennoch: 

Die PHP-Entwicklergruppe hat eine erste Beta-Version von PHP 4.0
veroeffentlicht, siehe auch Mail von Andi Gutmans vom 19.07.1999 in
der englischsprachigen Mailingliste. 

Original-Informationen inkl. Details zur Migration sowie Download via
http://www.php.net/version4/ 

Die Autoren weisen ausdruecklich darauf hin, dass es sich um eine
Beta-Version handelt, welche nun in einem breit angelegten,
d.h. oeffentlichen  Beta-Test von den bislang unentdeckten Bugs
befreit werden muss. Dazu bieten sie auch eine spezielle Bug-Database,
Adresse siehe o.g. URL.  
Die Empfehlung geht so weit, diese erste Beta (noch) nicht auf
Produktionsservern einzusetzen bzw. sollten die Applikationen
zunaechst intensiv getestet werden. 


Dankenswerterweise :-) hatte ich die Gelegenheit, eine Beta vom
letzten Samstag bereits ausprobieren zu koennen, im folgenden ein paar 
Bemerkungen dazu. 

- Installation:
===============
Meine Standard-Installation bestand aus PHP 4.0b1 mit Apache 1.3.6,
wobei PHP als Modul im Apache Platz fand. Experimentell habe ich keine
anderen Module eingebunden, dies jedoch nur, um etwaige Interferenzen
auszuschliessen. 
Die parallele Installation des PHP3 und PHP4-Moduls (!) ist nicht
moeglich. Jedoch waere es denkbar, z.B. PHP3 als CGI, und PHP4 als
Modul einzubinden. Oder natuerlich umgekehrt, beides als CGI etc. .

Nach dem obligatorischen ./configure (Parameter uebernommen von PHP3)
kompilierte PHP4 klaglos, ebenso funktionierte die Kompilierung des
Apache mitsamt des nun libphp4.a getauften Moduls. 

Zum endgueltigen Start des neuen Kompilats war noch eine Aenderung in
der httpd.conf notwendig, nun heisst es 
AddType application/x-httpd-php .php .php3 .htm 
AddType application/x-httpd-php-source .phps
anstatt application/x-httpd-php3 (!). 
Zwar sprechen die Migration Notes nur von der Dateiendung .php, aber
es erschien mir sinnvoll, auch diejenigen mit der Endung .php3 von der
neuen Version parsen zu lassen. 

Eine weitere Aenderung: php3.ini wurde umgetauft in php.ini .

Danach lief der neue Apache mit PHP4 ohne weitere Umstellungen, anhand
einer uebersichtlicheren Ausgabe von phpinfo() konnte man sich davon
ueberzeugen. 

- Anwendung / Unterschiede zu PHP3
==================================

Eine genaue Liste der Unterschiede befindet sich auf den Web-Seiten,
hier nur ein paar, die mir beim Betrieb vorhandener Skripte
aufgefallen sind.

- unset() ist keine Funktion (mehr), sondern eine Anweisung. Bzw. war
  es laut PHP-Gruppe niemals als Funktion dokumentiert, doch zumindest
  einmal hatte ich es als eine solche verwendet. Anpassung schnell
  moeglich. 

- Als Parameter von Konstrukturen sind nur noch skalare Variablen
  (z.B. Integer, String etc., aber _keine_ Arrays, Objekte o.ae.)
  erlaubt. Zugegebenermassen eigentlich sinnvoll, aber auch hier hatte
  ich zumindest eine Anpassung zu taetigen, war ebenfalls schnell
  erledigt. 

- Gleiches gilt fuer statische Variablen, habe ich aber selbst nicht
  getestet. 

- Bei einer Definition eines assoziativen Arrays ist folgende Zeile
  nicht mehr moeglich: $arr = array(dingens => "Toast");, statt dessen
  muss $arr = array("dingens" => "Toast"); geschrieben
  werden. Achtung: Das basiert auf eigenen Erfahrungen, ist nicht in
  der Liste der Unterschiede enthalten. Jedoch stieg PHP4 hier bei
  Verwendung des ersten Konstrukts ohne Fehlermeldung
  aus. Moeglicherweise ist es ein Bug in PHP4 bzw. Zend, jedoch
  erscheint mir die zweite Variante von vornherein "sauberer". 

- Vollstaendig neu (und bislang undokumentiert) sind die Funktionen
  zum Session-Handling, welche PHP4 nun "ab Werk" bereitstellt. 

Hier eine minimale Testdatei, aufgeschnappt auf einer Mailingliste:
========== Datei: sestest.php =================
<?php
  session_register("count");
  if($count++ > 0)
    echo "Welcome back! You have visited this site $count times!";
?>  
    <P> 
    <A HREF="sestest.php?<?=sid?>">Click here</a> to count up.
================================================

Hier wird mit session_register die Session fuer die Variable "count"
eroeffnet, wobei diese Variable mit ihrem Wert persistent gespeichert
wird. Die Speicherung geschieht jedoch per default im Verzeichnis
/tmp/, weshalb die gesamte Session-Behandlung IMHO (!)
datenbank-gestuetzte Loesungen wie - na, Ihr wisst schon - nicht
ersetzen kann. 
Vielleicht irre ich mich in diesem Punkt, wie erwaehnt, die Funktionen
sind bislang nicht bzw. nur im Quellcode dokumentiert, moeglicherweise
kann ich das darin enthaltene Potential bislang nicht abschaetzen. 

Immerhin ist diese native Unterstuetzung von Sessions sehr gut fuer
das Image von PHP4, so braucht es auch in diesem Bereich den Vergleich
mit ASP nicht mehr zu scheuen. 

Weitere Aenderungen und Ergaenzungen siehe auf den englischsprachigen
Web-Seiten, als wichtigste waere wohl die Zend Scripting Engine zu
nennen, welche PHP4 als Grundlage dient, damit einher gehen auch neue
Features der Sprache, als Beispiel seien das verbesserte
Objekt-Handling, oder auch Schleifen mit foreach(), HERE-Docs (wie in
Perl) etc. genannt. 

Die Verwendung von Zend soll auch eine Steigerung der
Ausfuehrungsgeschwindigkeit bewirken. Dies liess sich lokal natuerlich
schlecht testen, meinem _subjektiven Eindruck_ zufolge ist PHP4
tatsaechlich schneller geworden, die Seiten werden schneller
ausgeliefert. Zwar habe ich auch einen kleinen Benchmark-Test
durchgefuehrt, welcher den Eindruck bestaetigte, doch moechte ich
keine Zahlen veroeffentlichen, da die Test-Umgebung keineswegs optimal
war und es sich ausserdem um Beta-Code handelt, bei dem vermutlich
noch einiger ueberfluessiger Debug-Code enthalten ist. 

Bemerkenswert war jedoch, dass beim Benchmark (unter
moeglichst gleichen Bedingungen) PHP3 den Rechner weitaus
mehr in Anspruch nahm, soll heissen, die Load stieg auf ueber 30,
wobei PHP4 es gerade mal auf ca. 5 brachte. 

- Weniger erfreulich
====================
...waren und sind die mitunter vorkommenden, tja, wie sollte man es
nennen - "Abstuerze", Tod der geforkten Prozesse ?. 
Soll heissen: Mitunter gibt PHP4 keine Fehlermeldung aus, wenn
z.B. ein offensichtlicher Syntaxfehler im Skript enthalten ist,
sondern die Seite wird mit 0 Bytes und somit der Meldung "Document
contains no data" ausgeliefert. Das heisst auch, dass der Apache
selbst sehr wohl am Leben bleibt, sowie dass nach Korrektur der
Skripte deren Ausfuehrung wieder problemlos moeglich ist. Im Logfile
wird nichts hinterlassen, also auch kein "Segmentation Fault of child
process" (oder aehnliche, bereits erlebt...). 
Hier handelt es sich wohl eindeutig um Probleme der fruehen
Beta-Version, evtl. sind diese inzwischen bereits korrigiert. 

Einige Module sind noch nicht auf dem neuesten Stand, dies soll zur
zweiten Beta korrigiert werden. 

- Fazit
=======
Insgesamt ist die Version bereits sehr erfreulich, erst recht, wenn
man bedenkt, dass es sich um eine komplette Neuentwicklung der
zugrunde liegenden Skript Engine, eben Zend, handelt. Dass in einer
fruehen Beta-Version noch Bugs enthalten sind, ist verstaendlich
bzw. als normal anzusehen. 
Die meisten vorhandenen Skripte laufen ohne Aenderungen, manche
beduerfen kleinerer Anpassungen. 

Fuer "Produktionsserver", bzw. Umgebungen, in denen mehrere Leute PHP
benutzen, wuerde ich zumindest die naechste Beta abwarten wollen
(hallo, infosoc... ;-) ) bzw. PHP4 als CGI oder auf einem anderen Port
zur Verfuegung stellen.  

Bleibt, den Autoren und allen Beteiligten herzlichen Dank fuer diesen
sehr grossen Schritt, oder nennen wir es Quantensprung, zu sagen. 

Beste Gruesse,
   Ralf
-- 
/ ralf_(at)_kuerbis.org               ->  http://www.kuerbis.org
/ PHP-Center - alles rund um PHP ->  http://www.php-center.de


php::bar PHP Wiki   -   Listenarchive