Prednosti korišćenja 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 i shodno tome lakše izlazi na kraj s povećanim brojem poseta.
Web stranice bazirane na PHP-u poput WordPressa, Drupala, Joomle, Magenta ili PHP frameworka poput Laravela ili Symfonya dokazano rade brže koristeći poslednju stabilnu verziju PHP-a. Mnogi sistemi su već usklađeni sa standardima koje je uveo PHP 7-x, neki od njih, poput WordPressa, već sugerišu PHP 7.x kao preporučenu verziju PHP-a
P.S. Ništa ne brinite, nećemo vas forsirati da pređete na novu verziju. Kod nas su još uvek dostupne verzije PHP-a od 4.4 pa na više. Ono što želimo da uradimo, jeste da vam u ovom tekstu objasnimo prednosti novije verzije PHP-a, i zašto je ipak bolje da razmislite o prelasku na istu.
“PHP 7.x je samo broj kao i svaki drugi, neću da pređem!”
Da bi smo izbegli ovakve odgovore, odlučili smo da vam izložimo par činjenica zbog čega je ipak dobra ideja da pređete na novu verziju .
- 69.6% programera je reklo da su spremni da koriste PHP 7.x u produkciji
- Svega 3.8% programera su odbili da koriste PHP 7.x, pod izgovorom “Ukoliko me hosting kompanija uslovi da pređem na noviju verziju prećiću, inače ne.”
- Preko 70% programera već uveliko koristi PHP 7.x kao njihovo programersko okruženje
- PHP 7.x grubo rečeno, po poređenju performansi, radi skoro 2 puta bolje od verzije PHP 5.x
Deo koji se ne slaže sa prethodnim činjenicama smatramo da je sama praksa i neobaveštenost!
Da ne bi došlo do zabune ili nejasnoća odlučili smo da pojasnimo ova dva termina:
- Praksa → “E, radi ovako kako je, nemoj ništa dirati i čačkati za tu tvoju PHP verziju!” i 10 dana kasnije, kako to već ide, upadne Pera haker kroz “rupu” u PHP 5.x verziji i upropasti sve. Da, bukvalno sve.
- Nebaveštenost → “Nisam ni znao da postoji nova verzija i da to treba ažurirati”. Sasvim legitiman odgovor. Kao i sve ostale aplikacije, za računar/tablet/moblini uređaj, treba redovno ažurirati. Razlog je veoma jednostavan, ali i veoma bitan → sigurnost podataka i brzina rada aplikacije.
Malo istorije
PHP 5.x je objavljen 2004. godine. Dobro nas je služio. Ali, internet je vrlo dinamično mesto pa treba držati korak s trendovima, potrebama i zahtevima korisnika.
Tako je (nikad objavljena) verzija PHP 6.x trebala da uvede Unicode. Unicode je standard za razmenu podataka usmeren na prikaz slova na način nezavistan o jeziku, računarskom programu ili računarskoj platformi. S obzirom da je implementacija kompleksna i da su donešene neke loše odluke, (da ne spominjemo povećanje potrošnje memorije i povećanje potrošnje resursa), nakon ankete je donešena odluka da se verzija PHP 6.x jednostavno preskoči.
Početkom 2015. godine objavljena je prva alpha verzija PHP-a 7.x. Prva stabilna verzija (7.0.0.) objavljena je u decembru iste godine. Tačno godinu dana kasnije, u decembru 2016. godine objavljena je verzija PHP-a 7.1 , a već nepunih sedam meseci kasnije i PHP verzija 7.2.
PHP project je objavio listu uklonjenih funkcija , kako bi vam pomogla da bezbolno pređete sa verzije 5.x na verziju 7.x . Takođe, dostupna je lista uklonjenih API-a i ekstenzija.
Podaci o korišćenju
Po poznatim izvorima podataka, preko 70% web stranica baziranih na PHP-u još uvek koristi PHP 5.x. Tako W3Techs u statistici za mart 2019. godine donosi podatak da se verzija PHP 5.x koristi na 70.6% svih web stranica baziranih na PHP-u kao programskom jeziku.
WordPress kao najzastupljeniji CMS na internetu, u svojim statistikama korištenja za mart 2019. godine donosi podatak da 44.6% WordPress sajtova koristi PHP 7.x, što je brojka koja pokazuje siguran porast dela. Poređenja radi, udeo PHP 7 verzija je do pre dve godine bio svega nešto jače od 6.5%.
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 promenu sa PHP5.x na PHP7.x jeste povećanje brzine. Nezavisno koji benchmark alat koristili, PHP7.x je bolji po performansama od prethodnih verzija.
Na primeru ispod, 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 uporedili poboljšanje performansi, odlučili smo da uradimo nekoliko testova.
Na VPS serveru smo instalirali WordPress, Joomlu i WooCommerce, sa “dummy contentom“, bez aktivnog cache-iranja. 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 pre 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
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
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
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
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
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
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 s Shortest transaction: 0.56
Provera PHP kompatibilnosti
Svaka nova verzija PHP-a donosi poboljšanja, bugfix-eve, sigurnosne zakrpe, pa ponekad i promene u strukturi koda. Neke nadogradnje donose poboljšanja ili promene kojima pojedini delovi prethodnih verzija postaju zastareli. U nekim slučajevima cele verzije, kao na primer PHP 4 i starije verzije, više nisu podržane.
Ako koristite dodatke, teme ili skripte koje se oslanjaju na zastareli PHP kod i nadogradite na noviju verziju PHP-a, promene u odnosu na nadogradnju mogu uzrokovati nekompatibilnost starog koda i stranica se može “srušiti”. Važno je upoznati se s promenama koje donose nove verzije PHP-a i uskladiti kod svoje veb stranice.
Na niže navedenim linkovima možete videti šta se promenilo u određenim verzijama PHP-a:
- Migracija s PHP 4 na PHP 5.0.x
- Migracija s PHP 5.0.x na PHP 5.1.x
- Migracija s PHP 5.1.x na PHP 5.2.x
- Migracija s PHP 5.2.x na PHP 5.3.x
- Migracija s PHP 5.3.x na PHP 5.4.x
- Migracija s PHP 5.4.x na PHP 5.5.x
- Migracija s PHP 5.5.x na PHP 5.6.x
- Migracija s PHP 5.6.x na PHP 7.0.x
- Migracija s PHP 7.0.x na PHP 7.1.x
- Migracija sa PHP 7.1.x na PHP 7.2.x
- Migracija sa PHP 7.2.x na PHP 7.3.x
Osim ručnog pregledanja koda vaše web stranice, posao možete prepustiti pluginovima koji skeniraju vašu web stranicu i upozoravaju vas na eventualne greške u kompatibilnosti koda. Na primer, 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đe kreira izveštaj iz kojeg možete iščitati šta točno treba popraviti.
Ako pronađete plugin, temu ili skriptu koja nije kompatibilna sa PHP verzijom koju želite da koristite, prvi korak bi trebalo da bude kontaktiranje autora i/ili developera koji je “zaslužan” za nekompatibilni kod.
Kako ažurirati PHP na Plus Hosting serverima?
Nova verzija je dostupna na svim Shared hosting, kao i Reseller paketima. Kako promeniti verziju PHP-a? Veoma jednostavno, putem cPanel i aplikacije “Select PHP Version”.
Zaključak
Nadogradnja PHP verzije sa 5.x na 7.x uključuje pažljivo proveravanje kompatibilnosti, ali prednosti nadogradnje na su više nego očigledne.
Nova verzija radi mnogo brže nego PHP 5.x, stoga će veb stranice na hardware-u trošiti mnogo manje resursa i osetno bržim radom posetiocima vaše veb stranice omogućiti ugodnije korisničko iskustvo.