SR

Tag: php


PHP 8.1 – Šta je novo?

25.11.2021. – tačno godinu dana nakon verzije 8.0 izašla je i PHP 8.1 verzija, koja pored novina u sintaksi donosi i znatno veću brzinu.

Sa gledišta vlasnika sajta koji koristi Laravel ili WordPress, bitno je napomenuti, budući da je 8.1 i dalje novitet, većina plugina i dodataka nije detaljno testirana ili kompatibilna sa novom verzijom, te ukoliko se sada odlučite za prelazak na PHP 8.1, dobro istestirajte funkcionalnost sajta.

UNLIMITED.RS je na većinu servera implementirao PHP 8.1 te već sada možete testirati svoje aplikacije.


5 stvari koje treba da znate o PHP 8.1

PHP 8.1 uvodi Enums, jedne od najčešće zahtevanih i najisčekivanijih stvari za PHP jezik. Takođe uvode se i Fibers, koji su najznačajniji korak ka odvajanju PHP-a od tradicionalnog zahtev-odgovor obrasca.

 

1. Poboljšanje brzine

Zahvaljujući više optimizacija unutar samog PHP jezika, brzina renderovanja stranice je umnogome unapređeno. PHP navodi da je poboljšanje od čak 23% na Symphony Demo Aplikaciji i 3.5% na WordPress instalaciji (iako poslednja verzija WordPress-a još uvek zvanično ne podržava PHP 8.1). Bitna napomena je da za razliku od PHP 8.0 ova poboljšanja sada ne zavise od upotrebe JIT (just-in-time) kompajlera, već od samog koda PHP 8.1.

Symfony Demo App request time
Symfony Demo App vreme potrebno za izvršavanje zahteva: 25 x 250 zahteva u sekundi

Takođe, autor Dmitry Stogov je objavio da je na 8.1 verziji od 5-8% poboljšanje performansi za opcache modul, poboljšanje koje naziva “inheritance cache”. Ovi noviteti omugućavaju keširanje linkova između klasa, slično preučitavanju klasa na verziji 7.4


 

2. Nove funkcije i opcije

Bolja brzina renderovanja stranice nije jedini novitet na PHP 8.1 verziji. Postoji više novih funkcija a ovo su samo neke od njih:

 

Enums

Enumeracije ili skraćeno Enums su brojivi tip sa fiksnim brojem vrednosti. Primer za predefinisane Enums je špil karata sa četiri simbola koji su nepromenjivi: tref, pik, herc, karo.

primer deklarisanje Enums:

enum Suit {
   case Clubs;
   case Diamonds;
   case Hearts;
   case Spades;
}

Sa Suit Enumom sada možemo navesti tipove prilikom korišćenja Suit vrednosti:

function pick_card(Suit $suit) {}
pick_card(Suit::Clubs);
pick_card(Suit::Diamonds);
pick_card(Suit::Hearts);
pick_card(Suit::Spades);

 

Fiber

Fibers ili “zeleni threadovi” su vrlo koristan način za startovanja/stopiranja dela koda, i tako paralelno izvršavanje više stvari. Popularni framework kao što su Amphp i ReactPHP će dosta korisitti Fibers u budućnosti zbog svoje praktičnosti i brzine.

Slikoviti prikaz upotrebe Fibera možemo pokazati slanjem 3 zahteva ka drugom serveru, svaki zahtev ima svoju boju, obojeni deo je vreme izvršavanja koda, dok je isprekidani deo vreme čekanja na odgovor od servera ka kome šaljemo zahtev.

U PHP verzijama do 8.0 izvršavanje ovih istovremenih zahteva izgleda ovako:

PHP 8.1

Dakle svaki naredni zahtev čeka da se prethodni završi.

Dok od PHP 8.1 sa Fibers ovo izvršavanje zahteva je istovremeno i time se smanjuje vreme izvršavanja jer se optimalnije koristi vreme čekanja.

PHP 8.1

Paralelno izvršavanje je i do sada bilo moguće na PHP-u upotrebom yield i generatora, međutim Fibers donose drastično unapređenje jer su dizajnirani upravo za ovu upotrebu.

 

Readonly properties

Readonly vrednosti mogu biti samo čitane, dakle definišu se jednom i više ne menjaju vrednost.

Primer:

class PostData { 
     public function __construct( 
         public readonly string $title,
         public readonly DateTimeImmutable $date, 
     ) {} 
}

Prilikom pokušaja promene Readonly propety javlja se greška

$post = new Post('Title', /* … */); 

$post->title = 'Other'; 

Error: Cannot modify readonly property Post::$title

 

3. Druge funkcije vredne spomena

Kao što smo ranije napomenuli, lista novih funkcija na PHP 8.1 verziji je poprilična i da bismo svaku pojedinačno naveli trebalo bi nam više od jednog teksta, te ćemo samo nabrojati one vredne pomena:

▪ never tip

▪ final klasne konstante

▪ fsync i fdatasync funkcije

▪ array_is_list funkcija

▪ $_FILES: nova full_path vrednost za dodavanje fajlova

▪ MYSQLI_REFRESH_REPLICA nova MySQLi konstanta – reč replica umesto rasno neprihvatljive reči slave


 

4. Kako podesiti PHP 8.1 na cPanelu

Za sve UNLIMITED.RS Web hosting korisnike na cPanelu će unutar PHP selektora uskoro biti dostupna verzija PHP 8.1 te će svi koji su zainteresovani moći da je koriste na svojim sajtovima.

Uputstvo za promenu PHP verzije možete videti ovde: Kako da promenim PHP verziju ili uključim ekstenziju?


 

5. Deprecated funkcije

I na kraju, lista depricated funkcija, INI direktiva i metoda:

▪ mysqli::get_client_info method, mysqli_get_client_info($param)

▪ Serializable

▪ date_sunrise, date_sunse

▪ strptime

▪ mhash*()

▪ filter.default, filter.default_options

▪ PDO::FETCH_SERIALIZE

▪ auto_detect_line_endings

▪ strftime, gmstrftime

▪ mysqli_driver->driver_version

 

 

PHP 7.4 je tu! Šta nam novo donosi?

PHP 7.4 je stigao 28.11.2019. a od prekjuče je dostupan svim našim korisnicima, bez obzira koji paket imaju ili na kom su serveru. Mi smo se potrudili da ne čekate duže od 20 dana novu verziju PHP-a.
Ova vest naravno važi za Shared web hosting usluge, dostupnost nove PHP verzije na VPS i Dedicated serverima zavisi od instaliranog softvera.

 

Šta je novo?

PHP 7.4 je veliki korak kada govorimo o poboljšanju performansi i čitljivosti koda. Po našim testovima, nova verzija je brža u proseku 20% u odnosu na 7.3, što nikako nije zanemarljivo. Dodajmo i činjenicu da nova PHP verzija ima smanjenu potrošnju memorije te pomoć za programere u vidu integrisanog CLI moda, dovoljno razloga da razmatrate upgrade.

Stigla je i podrška za:
Typed Properties
Arrow funkcije
Weak References
– Propagiranje operatora u array expression
– Preloading
– Covariant Returns i Contravarian Parameters

 

Kompatibilnost

– Register_globals, magic_quotes i safe_mode je uklonjen
break/continue $var sintaksa je obrisana
– Promene u array_merge

 

Kako da svoj sajt prebacim na PHP 7.4?

Uputstvo za upgrade možete pročitati ovde. Dakle, sve obavljate u par sekundi jer je PHP selector omogućen na svim paketima.

Šta sve može krenuti po zlu? Praktično ništa jer sve možete rešiti kroz par minuta, prebacite PHP verziju sa starije na 7.4 i proverite da li sajt normalno funkcioniše. Ako postoje ozbiljne greške, a svi pluginovi su ažurirani na najnoviju verziju, vratite na verziju PHP-a na kojoj je sajt bio.

Ukoliko imate veoma posećen sajt, proverite kompatibilnost sa CMS-om, pluginima ili promenu radite u satima kada nema saobraćaja. Kompatibilnost zavisi od toga na kojoj platformi sajt baziran, najnovije verzija WordPress-a i Joomle podržavaju PHP 7.4 u potpunosti, ali određeni pluginovi koji retko izbacuju ažuriranja mogu biti problem.

 

Benchmark rezultati

Testiranja brzine koje je sproveo centminmod.com potvrđuju činjenicu da je PHP 7.4 brži od PHP 7.3 neznatno više od razlike između 7.2 i 7.3.

Iako svi željno isčekujemo PHP 8.0 koji stiže početkom 2021, a koji će doneti veće razlike u brzini, nova verzija je ispunila naša očekivanja te donosi niz benefita koje trebate iskoristiti.

 

Kontaktirajte nas

Telefon

+381 11 428 08 08

Chat uživo
Live Chat