PHP тегі жаттығу, бірақ сіз удаленнен байланыс орнату, файлдарды жүктеу кезінде санамды міндетті тасқындар туындай алатын болады. Жаттығу салуды бірнеше бөлімді тездету немесе көп рет талапталатын тасқындарды басқару үшін әрекеттелген көмек көздері бар.
PHP файлдарын орындау кезінде оны алдымен CPU-ға арналған опкодтарға (CPU-ге арналған машина кодтары) компиляциялануы керек. Егер бағдарлама коды өзгермеген болса, опкодтар ойдағы болар, сондықтан бұл компиляциялану кезеңі CPU ресурстарын жеткізуші көмек көздерге айналды.
Опкод кеши, опкодтарды еске сақтау арқылы ойдағы шағымдарда оларды қайтадан пайдалану арқылы қайталанатын компиляцияны тоқтатады. Көбінесе файлдың имзасын немесе өзгертілгені болмаса да, онда компиляцияны тексереді.
Опкод кеши сіздің бағдарламанызға асырау көмек жасайтын кездейді. PHP 5.5-тен бастап ол жасалған - Zend OPcache. Сіздің PHP пакеті/дистрибутивіңізге байланысты, бұлдай жалға бармауы мүмкін - opcache.enable мен phpinfo()
функциясының шығармашысын тексеріңіз. Алдыңғы нұсқалар үшін PECL ке кетпейтініні тексеріңіз.
Опкод кеші туралы көбірек оқу:
Сіздің кодыңызда көмек көруі мүмкін болатын деректер менің түзету қажет болатын уақыттар болады, мәселен, деректерді алу маңызды болатын жағдайлар немесе нәтижесі дайын өзгермейді болатын база деректерлері мен басқа бірі. Сіз бұл деректерді жатты тарту үшін оларды жадында сақтау қажет ететін объекттік кешиздену программасын пайдалана аласыз. Оларды ойдағы күнге арналған көмекпен тергеу үшін деректерді сақтасаңыз, онда оларды тікелей сауалдар үшін кештен жатты тарту үшін деректер базасынан тартпайтын боларын сала аласыз. Бұл өзгерістер мен бағдарлама серверлерінің тіркесін қымбатты меңгереді.
Танымал кешелеу шешімдері арасында APCu және memcached өте популярлар. APCu объекттік кешелеу үшін отбасы қолдануға болатын таңдау боларының бірі, оның жад памгасына өз деректерін қосу үшін қарапайым API-сі бар және орнату мен пайдалану өте оңай. APCu-ның тек бір әдістері мендікті ауруланатын серверге байланыстырылған болуынан ауыртынуы бар. Мемкешіге ешқандай басқа салыстырылмаушы салдайлар менің жаттығу кезінде оларды кездейсоқ күнгі тартату кезінде өз бірігіне жатты сақтау мүмкіндігі бар, онда жоғары даңқты жерге объекттіктерді сақтау үшін қолдануды басу үшін барлық сиcтемалар мен өзгеріс еткізе аларыңыз.
PHP (Fast-)CGI өкіметінінің ішінде PHP қосылған кезде, әр PHP процесі саны өзінің кеши болады, мінда APCu деректері сіздің жұмыс істеген кезде бөлінбейді. Бұлай болмаса, оларды біріктірмеге байланыстырған memcached қолдануын қосу керек.
Желілі бағдарламалы түрлі таралату кезінде, адамзатты қайталану жылдамдығын көру үшін APCu тобы memcached-тан артықты көрсетеді, бірақ memcached-ты басқа серверлер арасында қосу мүмкіндігі бар, сондықтан сіз оларды жарықты жерге объекттіктерді сақтай аласыз. Бір республикалық бағдарламаға кейін алғанда, егер сіздің өзгерістеріңізді жұмыс істегінеуіңізді қамтамасаңыз немесе memcached ұсыныстарын қолдануға қажет болмаса, онда объекттік кешелеуді үшін APCu барлық таңдауыңыз боларында ең жақсы таңдау болады.
APCu пайдалану
ын иллюстрирулау:
<?php
// cache-те 'expensive_data' деген аты бар деректер бармызды тексереміз
$data = apcu_fetch('expensive_data');
if ($data === false) {
// деректер кеште жоқ; мүліметтердің қатесіз шағымын сақтау үшін берілген функцияның нәтижесін сақтаймыз
apcu_add('expensive_data', $data = get_expensive_data());
}
print_r($data);
Ескеріту: PHP 5.5 ден бастап, осындай бір объекттік кеш пайдалану жөніндегі APC кеши бар еді. Жаңа APCu - бұл PHP 5.5+ үшін APC-нін объекттік кешін аудару проекті, себебі PHP-да қазірдікі встроенді байткод кеші (OPcache) бар.