Chat / support@radicenter.eu

PHP kiiremaks + opCache lisamine serveritele

Kuna osad kliendid on täheldanud, et meie serverite turvaline PHP keskkond on jäänud osadel juhtudel aeglasemaks võrreldes paari teise teenusepakkujaga. Vastavalt klientidepoolsele tagasisidele ja soovidele võtsime vastu otsuse vahetada seni toiminud mod_php välja php-fcgi (PHPFastCGI) vastu. Samuti sai lisatud serveritele ka Zend’i opCode cache.

21.01.2016 – Alustasime serveritel FastCgi ja Opcache kasutuselevõtmist. Esimesed serverid on muudatuse läbi teinud ja muudatused on paljulubavad. Lähiajal jõuab muudatus kõigi serveriteni. Täpsem info jõuab peagi klientideni nii udiskirjana kui ka täpsema artiklina meie kodulehel ja samuti siin lehel.
27.01.2016 – Lõpetasime serveritel FastCgi ja Opcache’le ülemineku. Serverid on muudatuse läbi teinud ja muudatused toimivad sujuvalt ja korrektselt.

1. Mis muutub?
2. Võimalikud probleemid ja lahendid:
– Disable/Enable ZEND opCache
– AddType application/x-httpd-phpXX .misiganesfaililaiend (html|htm|js|…)
– No input file detected / PATH_INFO
– veebilehe veateade Error 500 / .htaccess probleemid
3. Küsimused/vastused
4. Lisainfo FastCGI ja opCache kohta

1. Mis muutub?

Kuna klientide jaoks otseselt peale veebilehe laadimise kiiruse ja võimaluse lehe koodi puhverdada, ei muutu – suuremat teavituskirja välja ei saadetud. Teavitus lisati Radicenteri kodulehele ja nii Facebooki kui ka Twitterisse. Nii PHP 5.3 kui ka PHP 5.5 all on vaikimisi toimiv uus FastCGI koos Opcache mooduliga.
NB! Kuna Opcache on vaikimisi määratud toimivaks, lisatakse veebilehe kood ka koheselt vahemällu, kiirendades lisaks FastCGI’le lehtede laadimist veel ka nö. vahemälust. Kuna Opcache on vaikimisi aktiivne, võib veebilehele koodi lisamisel/muutmisel esineda viivitusi veebisirvijas muudatuste kuvamisel (hetkel kuni 5 minutit). (Allpool on kirjeldatud lahend , kuidas Opcachet ajutiselt deaktiveerida või üldse maha võtta)
Enam ei ole võimalik otse kasutada $_SERVER[‘PATH_INFO’] (kood, mis seda kasutab, annab vea – võimalik probleem ja lahend toodud allpool) ega ka nö. custom faililaiendite puhul otse lisada .htaccess kaudu “AddType application/x-httpd-phpXX misiganesfaililaiend” (lahendus toodud allpool).

2. Võimalikud probleemid ja lahendid


– Disable/Enable/invalidate ZEND opCache
Kuna palju arendajaid kasutab meie teenuseid, siis on võimalus määrata ka opCache refresh 0, kus peale iga muudatust kontrollitakse lehel oleva koodi muutusi ja vajadusel refreshitakse cahcet. Seda saab teha, lisades .htaccessile käsu:

php_value opcache.revalidate_freq 0

(Automaatne uuendus on hetkel vaikimisi 300 sekundit!)

opCache saab keelata käsuga:
.htaccessis:

php_flag opcache.enable 0


PHP scriptis keelata failil või tühjendada:

<?php
//Et teha cachele reset/update antud domeeni ulatuses:
opcache_reset();

//Et eemaldada mingi kindel fail opcache alt (et antud faili ei puhverdataks)
opcache_invalidate(/full/path/to/script.php);
?>


– AddType application/x-httpd-phpXX .misiganesfaililaiend (html|htm|js|…)
“AddType application/x-httpd-phpXX .misiganesfaililaiend” ei ole kahjuks enam võimalik muuta .htaccess kaudu. Küll aga saab seda teha Radicenteri kasutajatugi otse serveril! Kui juhtub et teil on kasutusel oma custom faililaiend kujul .XXX vms. ja teil hetkel veebileht ei toimi, saatke palun vastavasisuline teave Radicenteri klienditoele , mis sisaldaks:

– Milline domeen ei toimi
– mis kasutajakontoga on tegemist (rXXXXXXX/npXXXXXX)
– mis PHP versioon peaks olema kasutusel (5.3/5.5/X.X)
– mis faililaiendiga on tegemist (html/htm/ssd/dev/…)

(Antud mail PEAB TULEMA veebimajutuse konto kas tehniliselt või konto kontaktmaililt!!!)
Saame teha teile soovitud muudatuse.

Alternatiivina võite proovida ka ühe meie kliendi poolt pakutud lahendust:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)\.css$ $1.php [NC,L]

#kui soovite et see muudatus ka alamdomeenidele rakenduks, siis lisage sinna ka:
RewriteOptions InheritDown

Võimalik oleks kasutada ka mitme erineva faili puhul:

<Files ~ "\.(xxx|yyy|nnn)$">
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ $1.php [NC,L]
</Files>


– No input file detected / PATH_INFO
Oleme tuvastanud 2 erinevat võimalikku probleemi:
1. .htaccessis on vananenud kood mod_rewrite kohta:
RewriteRule ^(.*)$ index.php/$1 [L]
Võtke antud koodi lõpust ära “/$1” – ja leht toimib:
RewriteRule ^(.*)$ index.php [L]
(Või asendage antud koodi lõpust “/$1”:
RewriteRule ^(.*)$ index.php?$1 [L])
(Reeglina ei ole vaja muutujaid kaasa saata ja uuemad scriptid suudavad selle ise tuvastada!)

2. PHP sisuhaldus kasutab vananenud funktsionaalsust, mis kasutab/nõuab eranditult $_SERVER[‘PATH_INFO’] muutujat.
Siin oleks lahenduseks lisada oma index.php või config.php faili (see fail, mida kõikidele scriptidele includetakse) kood:

<?php
//Radicenter fix for FCGI servers.
if(!isset($_SERVER['PATH_INFO']) && isset($_SERVER["QUERY_STRING"]))
{
  $_SERVER['PATH_INFO'] = $_SERVER["QUERY_STRING"];
}

//NB! $_SERVER["QUERY_STRING"] asemel võib osadel juhtudel kasutada ka $_SERVER["REQUEST_URI"]
?>


– veebilehe veateade Error 500 / .htaccess probleemid
Oleme näinud ka paari veebilehte, kus on olnud vananenud kood .htaccessis, millele mod_php ei ole veateadet andnud kuid FastCGI koos opCachega annavad. Kui eelmainutud lahenditest ei ole kasu olnud, kontrollige palun oma domeeni vealogi – leitav läbi DirectAdminni -> “Site Summary / Statistics / Logs” -> klikkides “Web Error Log” real kas “Full Error Log” või “100 lines” lingile. Sealt on nähtav täpsem veateade, mis põhjustab lehe mitte kuvamist. Vastavalt saate kas antud rea ise välja kommenteerida või kui sellest ei ole abi, saatke vastavasisuline probleemi lühikirjeltus Radicenteri kasutajatoele.

3. Küsumused / Vastused

Siin all üritame lahti kirjutada meile saadetud enimlevinud küsimused antud muudatuste kohta
—–
K: Kas teie turvaline PHP keskkond säilis või tekkisid seal samuti täiendavad muudatused?
V: Antud keskkond säilis, kuna ei muudetud PHP’d ega sellega seonduvat konfiguratsiooni vaid seda, millist moodulit Apache kasutab PHP sisu kuvamiseks (Ehk siis mod_php vahetus mod_fcgi’ga)
—–
K: Aga miks te ei saatnud teavitust välja n+1 päeva ennem muudatuste algust???
V: Kuna tegemist oli “minor” uuendusega kus otseselt PHP sätted ja ka PHP ise ei muutunud, siis ei olnud otsest vajadust ka suurema teavituse järgi. Suurem teavitus tuleb koos selle aastase esimese uudiskirjaga! (Eraldi teavitus oli selle kohta meie veebilehel, Facebooki ja Twitteri feedides – seega midagi peidetud ei olnud.)
—–
K: Mul on domeenil XXXXX.xx funktsionaalsus X mis justkui enam ei toimi – kas see on ka selle uuendusega seotud?
V: Kõik on võimalik, kui teil on kasutuses mõni vananenud funktsionaalsus millele mod_php moodul varem veateadet ei andnud. Siinkohal tuleks siiski iga probleemi käsitleda eraldi! Täpsemat infot saate kindlasti oma Apache vealogist: läbi DirectAdminni -> “Site Summary / Statistics / Logs” -> klikkides “Web Error Log” real kas “Full Error Log” või “100 lines” lingile.
Alati võib veateatega pöörduda ka Radicenteri kasutajatoe poole.
—–

4. Lisainfo FastCGI ja opCache kohta

FastCGI kohta leiab rohkem infot lehelt: https://httpd.apache.org/mod_fcgid/
Zend’i opCache cohta leiab rohkem infot lehelt:
https://secure.php.net/manual/en/book.opcache.php

Comments are currently closed.

See veebileht kasutab küpsiseid, mis aitavad teha lehe külastamise mugavamaks. Meie veebilehte külastades nõustute meiepoolse küpsiste kasutamisega.
Sain aru.