Želje developera i vlasnika web stranica se sigurno podudaraju u potrebi da web stranica radi glatko i brzo, da ne troši puno serverskih resursa te shodno tome lakše izlazi na kraj s povećanim brojem posjeta. Web stranice bazirane na PHP-u poput WordPressa, Drupala, Joomle, Magenta ili PHP frameworka poput Laravela ili Symfonya dokazano rade brže koristeći posljednju stabilnu verziju PHP-a. Mnogi sustavi su već usklađeni sa standardima koje je uveo PHP 7, neki od njih, poput WordPressa, već sugeriraju PHP 7 kao preporučenu verziju.
Malo PHP povijesti
PHP 5 je objavljen prije punih 13 godina. Dobro nas je služio 😉 No, web je vrlo dinamično mjesto te treba držati korak s trendovima, potrebama i zahtjevima korisnika.
Tako je (nikad objavljena) verzija 6 trebala uvesti Unicode. Unicode je standard za razmjenu podataka usmjeren na prikaz slova na način neovisan o jeziku, računalnom programu ili računalnoj platformi. S obzirom na to da je implementacija kompleksna te da su donesene neke loše odluke, (da ne spominjem povećanje potrošnje memorije i udara na performanse), nakon ankete je donesena odluka da se verzija jednostavno preskoči.
Početkom 2015. godine objavljena je prva alpha verzija 7. Prva stabilna verzija (7.0.0.) objavljena je u prosincu iste godine. Točno godinu dana kasnije, u prosincu 2016. godine objavljena je verzija 7.1
PHP project je objavio listu uklonjenih funkcija , kako bi vam pomogla da bezbolno prijeđete s verzije 5 na verziju 7. Također, dostupna je lista uklonjenih API-a i ekstenzija.
Podaci o korištenju
Po nekim renomiranim izvorima podataka, preko 90% web stranica baziranih na PHP-u još uvijek koristi verziju 5.x. Tako W3Techs u statistici za ožujak 2017. godine donosi podatak da se verzija 5 koristi na 95.6% svih web stranica baziranih na PHP-u kao programskom jeziku.
WordPress kao najzastupljeniji CMS na internetu, u svojim statistikama korištenja za veljaču 2017. godine donosi podatak da 6.5% WordPress webova koristi PHP 7, što je brojka koja pokazuje siguran porast udjela. Usporedbe radi, udio verzije 7, 6 mjeseci ranije bio je 2.2%.
U statistici nije vidljiva verzija 4 jer je najniža podržana verzija PHP-a 5.2.4+
Performanse
Jedan od najvažnijih razloga za promjenu s PHP 5 na verziju 7 jest povećanje brzine. Neovisno koji benchmark alat koristili, PHP 7 je bolji po performansama od prijašnjih verzija.
Na primjeru niže, WordPress 4.7.2 na PHP 5.6 transaction rate je bio 7.93 trans/sec dok je na verziji 7.0 transaction rate bio 11.73 trans/sec, što je razlika od 48% u korist PHP 7.
Kako bi provjerili poboljšanje performansi, odlučili smo provesti nekoliko testova. Na VPS serveru smo instalirali WordPress, Joomlu i WooCommerce, s “dummy contentom“, bez aktivnog cacheiranja. Više o metodologiji i rezultatima u nastavku.
Testiranje
Hardware i software
4 CPU core Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz
8 GB RAM
CloudLinux environment
Metoda testiranja
Siege -c 20 -v -t 300s -i – f url file
Imamo 20 concurent usera, u internet modu (čekamo response time prije slanja novih reqestova), trajanje je 300 sekundi
WordPress
WordPress: verzija 4.7.2
Pluginovi: 0
Tema: Twenty Seventeen verzija 1.1
Sadržaj: WordPress theme test data
URL-ovi
http://www.stresstest.host25.com/wp/
http://www.stresstest.host25.com/wp/uncategorized/template-sticky/
http://www.stresstest.host25.com/wp/tag/sticky-2/
http://www.stresstest.host25.com/wp/category/uncategorized/
http://www.stresstest.host25.com/wp/page/4/
http://www.stresstest.host25.com/wp/page/2/
PHP 5.6
Grafovi
Lifting the server siege... done. Transactions: 2374 hits Availability: 100.00 % Elapsed time: 299.48 secs Data transferred: 65.75 MB Response time: 2.00 secs Transaction rate: 7.93 trans/sec Throughput: 0.22 MB/sec Concurrency: 15.84 Successful transactions: 2374 Failed transactions: 0 Longest transaction: 18.82 Shortest transaction: 0.67
PHP 7.0
Grafovi
Lifting the server siege... done. Transactions: 3514 hits Availability: 100.00 % Elapsed time: 299.53 secs Data transferred: 101.85 MB Response time: 1.21 secs Transaction rate: 11.73 trans/sec Throughput: 0.34 MB/sec Concurrency: 14.21 Successful transactions: 3514 Failed transactions: 0 Longest transaction: 7.67 Shortest transaction: 0.28
Joomla
Joomla: Version 3.6.5 Stable
Modules/Plugins: none
Tema: Protostar
Sadržaj: Getting started, Hello World
URL-ovi
http://www.stresstest.host25.com/joomla/
http://www.stresstest.host25.com/joomla/component/tags/tag/2-joomla
http://www.stresstest.host25.com/joomla/component/search/?searchword=template&searchphrase=all&Itemid=101
http://www.stresstest.host25.com/joomla/2-uncategorised/2-hello-world
PHP 5.6
Grafovi
Lifting the server siege... done. Transactions: 4786 hits Availability: 100.00 % Elapsed time: 299.35 secs Data transferred: 47.49 MB Response time: 0.74 secs Transaction rate: 15.99 trans/sec Throughput: 0.16 MB/sec Concurrency: 11.88 Successful transactions: 4786 Failed transactions: 0 Longest transaction: 5.70 Shortest transaction: 0.22
PHP 7.0
Grafovi
Lifting the server siege... done. Transactions: 5759 hits Availability: 99.97 % Elapsed time: 299.16 secs Data transferred: 57.24 MB Response time: 0.54 secs Transaction rate: 19.25 trans/sec Throughput: 0.19 MB/sec Concurrency: 10.47 Successful transactions: 5759 Failed transactions: 2 Longest transaction: 6.62 Shortest transaction: 0.15
WooCommerce
WordPress: verzija 4.7.2
Pluginovi: WooCommerce verzija 2.6.13
Tema: Storefront verzija 2.1.7
Sadržaj: WordPress theme test data + WooCommerce Dummy Data
URL-ovi
http://www.stresstest.host25.com/woo/
http://www.stresstest.host25.com/woo/proizvod/flying-ninja/
http://www.stresstest.host25.com/woo/blog/
http://www.stresstest.host25.com/woo/uncategorized/markup-image-alignment/
http://www.stresstest.host25.com/woo/feed/
http://www.stresstest.host25.com/woo/2010/10/
http://www.stresstest.host25.com/woo/kosarica/
http://www.stresstest.host25.com/woo/moj-racun/
http://www.stresstest.host25.com/woo/page/2/
http://www.stresstest.host25.com/woo/kategorija-proizvoda/music/
http://www.stresstest.host25.com/woo/oznaka-proizvoda/modern/
http://www.stresstest.host25.com/woo/proizvod/woo-logo-2/#comment-57
http://www.stresstest.host25.com/woo/?s=ninja
PHP 5.6
Grafovi
Lifting the server siege... done. Transactions: 1682 hits Availability: 100.00 % Elapsed time: 299.44 secs Data transferred: 37.48 MB Response time: 3.04 secs Transaction rate: 5.62 trans/sec Throughput: 0.13 MB/sec Concurrency: 17.10 Successful transactions: 1682 Failed transactions: 0 Longest transaction: 7.70 Shortest transaction: 1.12
PHP 7.0
Grafovi
Lifting the server siege... done. Transactions: 2631 hits Availability: 100.00 % Elapsed time: 299.38 secs Data transferred: 60.66 MB Response time: 1.75 secs Transaction rate: 8.79 trans/sec Throughput: 0.20 MB/sec Concurrency: 15.38 Successful transactions: 2631 Failed transactions: 0 Longest transaction: 7.05 Shortest transaction: 0.56
Provjera kompatibilnosti
Svaka nova verzija PHP-a donosi poboljšanja, bugfixeve, sigurnosne zakrpe te ponekad i promjene u strukturi koda. Neke nadogradnje donose poboljšanja ili promjene kojima pojedini dijelovi prethodnih verzija postaju zastarjeli. U nekim slučajevima cijele verzije, kao na primjer verzija 4 i starije, više nisu podržane.
Ako koristite dodatke, teme ili skripte koje se oslanjaju na zastarjele verzije i nadogradite na noviju verziju PHP-u, promjene u odnosu na nadogradnju mogu uzrokovati nekompatibilnost starog koda i stranica se može “srušiti”. Važno je upoznati se s promjenama koje donose nove verzije te uskladiti kod svoje web stranice.
Osim ručnog pregledavanja koda vaše web stranice, posao možete prepustiti pluginovima koji skeniraju vašu web stranicu te vas upozoravaju na eventualne greške u kompatibilnosti koda. Na primjer, u WordPressu možete koristiti pluginove poput:
- PHP Compatibility Checker – omogućava vam mogućnost izbora verzije PHP-a te pretražuje eventualne nekompatibilnosti na vašoj web stranicu. Plugin također kreira izvješće iz kojeg možete iščitati što točno treba popraviti.
- PHP Pseudo Compiler – PHP validacijski alat koji provjerava nedefinirane funkcije ili metode
Ako pronađete plugin, temu ili skriptu koja nije kompatibilna s PHP verzijom koju želite koristiti, prvi korak bi trebao bit kontaktiranje autora i/ili developera koji je “zaslužan” za nekompatibilni kod.
Kako početi koristiti PHP 7 na Plus Hosting serverima?
PHP 7 je dostupan na svim SPRINT hosting paketima. Upute kako promijeniti verziju u cPanelu dostupne su u bazi znanja u članku PHP opcije.
Zaključak
Nadogradnja PHP verzije s 5.6 na 7.0 uključuje pažljivo provjeravanje kompatibilnosti, no prednosti nadogradnje na verziju 7 su više nego očite. PHP 7 radi mnogo brže nego verzija 5.6, vaše web stranice će na istom hardware-u trošiti manje resursa te bržim radom posjetiteljima vaše web stranice omogućiti ugodnije korisničko iskustvo.