Preskočiť na obsah
Kategórie
Novinky Technológie Tipy a triky

Spustili sme výrazne rýchlejšie PHP 7

Len nedávno sa na webe objavila nová, superrýchla verzia skriptovacieho jazyka PHP 7. Spôsobila slušný rozruch. Novinka zarezonovala na fórach, sociálnych sieťach a v odbornej komunite. Nám sa podarilo nasadiť ju už na druhý deň po oficiálnom uvedení. Okrem toho sa nám podarilo prispieť k oficiálnemu release-u vlastným modulom, ktorý bol zaradený do podporovaných rozšírení.

Čo sa stalo s PHP 6?

Zasvetení si iste všimli, že sa vývojári rozhodli preskočiť šiestu verziu, ktorá vlastne nikdy nevyšla. Už v roku 2005 sa začalo programovanie PHP 6, ktoré nesplnilo očakávania a skončilo neúspešne.

PHP bolo dlhodobo kritizované za svoj slabý výkon, čo dokazuje aj to, že Facebook bol nútený napísať vlastný virtuálny stroj pre maximalizáciu výkonu PHP s názvom HHVM. Na základe hlasovania komunity developerov sa teda rozhodlo, že po neúspechu 6. verzie bude tá nová uvedená s poradovým číslom 7. Developeri prepísali v novej verzii zastaralý Zend framework na PHPNG, teda PHP Next-Generation, o ktorom tvrdia, že dokáže zvýšiť výkon stránok až o 50%.

Nové PHP 7 je ultrarýchle

Jedna z hlavných výhod PHPNG je zrýchlenie, ktoré efektívne optimalizovalo správu pamäte a tiež pridalo JIT kompilátor, ktorý umožňuje kompilovanie kódu počas behu programu. Rýchlosť ovplyvnil aj fakt, že mnohé zastaralé funkcionality boli úplne odstránené. Tím, ktorý pracoval na vývoji PHPNG, zverejnil tento graf. Všimnite si, ako sa zrýchlili populárne PHP frameworky s príchodom PHP 7.

Snímka01

Snímka02

Snímka03

Aby sme sa nespoliehali len na externé merania, rozhodli sme sa overiť si to v praxi.

request_distribution_php7

Priemerný čas odozvy s PHP7 (zelená čiara)  je o cca 15% lepší ako u PHP5.6 s Opcache (plná modrá čiara). Testovanie prebiehalo na takmer prázdnom WordPresse.

Nové kombinované operátory

Nová verzia PHP neponúka len lepšiu rýchlosť, ale tiež vylepšenia pre programátorov – nové kombinované operátory.

<=>  kombinovaný operátor, ktorý vám pomôže sprehľadniť váš kód

echo 1 <=> 1; // 0

echo 1 <=> 2; // -1

echo 2 <=> 1; // 1

?? kombinovaný operátor, ktorý vám pomôže skontrolovať, či objekt existuje a ak nie,

$username = $_GET[‚user‘] ?? ‚nobody‘;

// This is equivalent to:

$username = isset($_GET[‚user‘]) ? $_GET[‚user‘] : ‚nobody‘;

Nový typ “returnu”

V PHP 7 budú môcť programátori definovať return typ pomocou scalarov (boolean, string, float, integer). Umožní im to písať menej nepredvídateľný kód a uľahčí hľadanie chýb (napríklad aj s pomocou Exception engine). Ošetrovanie chybových hlásení nebolo vždy jednoduché, no teraz nám jazyk ponúka jednoduchšiu prácu, ktorá umožní programátorom zachytiť všetky fatálne chyby a ich spracovanie hneď, ako sa vyskytnú.

<?php

function sum($a, $b): float {

   return $a + $b;

}

// Note that a float will be returned.

var_dump(sum(1, 2));

?>

PHP aplikácie už aj na Windows serveroch

Doteraz bolo možné používať a spúšťať PHP aplikácie iba na serveroch s operačným systémom Linux (nerátajme experimentálne verzie, ktoré neboli oficiálne podporované). PHP 7 zaviedlo 64-bitovú podporu, ktorá umožní prácu s veľkými súbormi a 64-bitovými číslami. Umožní tak spúšťať aplikácie napríklad aj na Windows serveroch.

Skupinová deklarácia sprehľadní kód

PHP 7 taktiež zaviedlo skupinovú deklaráciu. Tá ušetrí veľa písania, skráti kód a umožní importovanie niekoľkých class z rovnakého namespaceu veľmi rýchlo a jednoducho v jednom riadku.

// Pred PHP 7

use some\namespace\ClassA;

use some\namespace\ClassB;

use some\namespace\ClassC as C;

 

// PHP 7

use some\namespace\{ClassA, ClassB, ClassC as C};

Ďalšia skvelá vec, ktorá sa objavila v novom PHP, sú anonymné classy, ktoré ste mohli vidieť v iných jazykoch – ako napríklad C# alebo Java. Sú to classy bez mena, ktoré nielen zlepšia prehľadnosť kódu.

// Pred PHP 7

class Logger

{

   public function log($msg)

   {

       echo $msg;

   }

}

$util->setLogger(new Logger());

// PHP 7

$util->setLogger(new class {

   public function log($msg)

   {

       echo $msg;

   }

});;

Nevýhody PHP 7

I keď autori populárnych CMS systémov urobili všetko pre to, aby boli ich produkty pripravené na spustenie PHP 7, obrovským problémom je množstvo tém a pluginov, ktoré nie sú na PHP 7 pripravené.  V prípade, že máte vlastnú PHP aplikáciu, budete zrejme musieť Váš kód mierne upraviť. Určite sa to však oplatí a stojí to za to.

BONUS: WebSupport prispel rozšírením do PHP 7

Zrejme uznáte, že cache-ovanie obsahu stránky je v tejto dobe veľmi populárne. Mnoho pluginov ukladá tento obsah do rýchlo prístupnej pamäti memcached. Náš kolega sa preto rozhodol, že modul pecl-memcache pre PHP 7 napíše sám. A bol prvý, ktorému sa to podarilo. Tento modul bol zaradený do oficiálne podporovaných rozšírení PHP 7, a tak sme aj my svojou malou troškou posunuli populárne CMS systémy bližšie k používaniu PHP 7. Zdrojové kódy nájdete aj na našom GitHube.

Autor: Tím Websupport

Sme slobodná a otvorená firma. Robíme to, čo nás baví a chceme každou našou činnosťou posúvať štandardy vyššie.

8 odpovedí na “Spustili sme výrazne rýchlejšie PHP 7”

phpcko ide na windowsoch pustat uz minimalne 8 rokov, tipujem, ze aj dlhsie, ale predtym som s nim nerobil

Odpovedať

No ješte to asi moc nefunguje…budu muset počkat než se vyladí 🙂

Ve vaší instalaci PHP patrně chybí rozšíření MySQL, které je však pro fungování WordPressu vyžadováno.

Odpovedať

Gratulujem!

Otazka: Kde nájdem také benchmarky? Sam si chcem otestovat rychlost terajsej stranky na 5.6 a ked ju zmenim na 7.0

Odpovedať

Z benchmarkovania by sa WS asi veľmi netešil. Väčšinou sa robia pomocou utilít ako apache benchmark alebo siege a to tak, že vytvárajú požiadavky na stránku a potom urobia analýzu. Z pohľadu WS je to ale prakticky DoS útok 🙂

Odpovedať

No, ludie si uz idu nohy dolamat, ze sade davaju typy, aby to islo rychlejsie. Ale na druhej strane treba povedat, ze to HHVM to PHP dost zahanbilo, preto moseli kopnut do vrtule, ale nie secko v tej PHP7 je, vela veci pride az v PHP7.1

Odpovedať

Tha, ja som cool developer (aj PHP), od piatka dokonca oficialne, ale do Bratislavy sa mi lozit nesce, heh!

Odpovedať

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *