Szerző: Gálffy Csaba

2013. június 21. 14:09

Megérkezett a PHP 5.5

Bekerült a PHP alapcsomagjába a Zend Optimizer+, API-t kapott az egyszerű és biztonságos jelszóhashelés és megszűnt a Windows XP támogatása - itt a PHP 5.5.

Fontos újdonság, hogy immár egyszerű API-n keresztül egyetlen sorral lehet biztonságosnak számító algoritmussal, bcrypttel hashelni jelszavakat. Ez hosszú ideig dolgozik és viszonylag nagy a memóriaigénye, így GPU-kkal csupán korlátozottan gyorsítható. Jellemzően egy nyolcmagos processzor mintegy 5000 hash-et képes kiszámolni másodpercenként (hasonló érték érhető el GPU-val is), míg SHA1 esetében több tízmillió próbálkozás teljesíthető másodpercenként. Ezzel a bcrypt alaposan megnehezíti például egy feltört adatbázis jelszavainak visszafejtését.

A nyelvben megjelentek új képességek is, mint az új array_column() függvény és a nem-skaláris iterátor-kulcsok (generátorok) a foreach() ciklusban - ez utóbbiak segítségével egyszerű rutinok implementálhatóak.

A változások másik része a nyelv stabilitását és teljesítményét növeli. A kiadásnak része a Zend Optimizer+ is, amelyet a fejlesztő szoftverház még februárban tett nyílt forráskódúvá, kimondottan azzal a céllal, hogy bekerülhessen a PHP 5.5-be. Ezt sikerült is meglépni, a korábban csak a Zend Server csomag részeként elérhető szoftver immár a kiadás része. Az eszköz javítja a PHP kódból fordított bytekód sebességét, járulékons előnye, hogy előfordított bytekódot tárol memóriában (opcode cache), ez jóval gyorsabb, mint lemezről olvasni majd fordítani a nyers kódot.

Erre érdemes figyelni

A PHP 5.5 telepítése előtt érdemes megfontolni, hogy a kiadás visszamenőleges kompatibilitása változott, így például nem fut már Windows XP-n és Windows Server 2003-on. Ennél fontosabb (és jóval több tesztelést igénylő) változás, hogy a függvények, osztályok és konstansok esetében a kis- és nagybetűk megkülönböztetése már nem függ a számítógép beállított lokalizációjától (locale). Ez problémát okozhat az olyan kód esetében, amely nem különböztet meg kis- és nagybetűket, de használ többbájtos karaktereket az objektumok nevében. A fejlesztők ajánlása, hogy a nem-angol, nem-ASCII kód esetében érdemes alapos tesztelés végezni az éles rendszer 5.5-re frissítése előtt. Hasonló változás, hogy a self, parent és static kulcsszavak esetében mostantól fogva egységesen nem különböztetnek meg nagybetűt.

Változott némileg a pack() és unpack() függvények működése is, közelebb került a Perlhez. Ez azonban azt jelenti, hogy a visszafelé kompatibilis kód írásához szükség lesz a version_compare() használatára. A belső működés is változik néhány helyen, ez különösen azokat a kiterjesztéseket érinti, amelyek alaposan belenyúlnak a Zend Engine működésébe.

A PHP 5.5 forráskódja és csomagjai a projekt weboldaláról tölthetőek le, PHP 3.01 licenc alatt. A változások részletes listája innen érhető el.

a címlapról