Prednosti korištenja PHP verzije 7.x

Ž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 PHP7, neki od njih, poput WordPressa, već sugeriraju PHP 7 kao preporučenu verziju PHP-a.

Malo 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 PHP 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 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 PHP-a 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 PHP 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.

Zastupljenost verzija PHP-a u postotcima

WordPress kao najzastupljeniji CMS na internetu, u svojim statistikama korištenja  za veljaču 2017. godine donosi podatak da 6.5% WordPress webova koristi PHP7, što je brojka koja pokazuje siguran porast udjela. Usporedbe radi, udio PHP7 6 mjeseci ranije bio je 2.2%.

WordPress - PHP statistike

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 PHP5 na PHP7 jest povećanje brzine. Neovisno koji benchmark alat koristili, PHP7 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 PHP 7.0 transaction rate bio 11.73 trans/sec, što je razlika od 48% u korist PHP7.

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 dataWooCommerce 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 PHP 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 PHP 4 i starije, više nisu podržane.

Ako koristite dodatke, teme ili skripte koje se oslanjaju na zastarjeli PHP kod 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 PHP-a te uskladiti kod svoje web stranice.

Na niže navedenim linkovima možete vidjeti što se promijenilo u određenim verzijama PHP-a:

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 PHP-a u cPanelu dostupne su u bazi znanja u članku PHP opcije.

Zaključak

Nadogradnja PHP verzije sa 5.6 na 7.0 uključuje pažljivo provjeravanje kompatibilnosti, no prednosti nadogradnje na PHP 7 su više nego očite. PHP 7 radi mnogo brže nego PHP 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.

Povezani članci

Odgovori