PHP 7.4 kullanarak üretim sunucularımda opcache önyüklemesini ( RFC ) etkinleştirmek istiyorum . Symfony kullanıyorum , ancak bu tüm PHP için geçerlidir.
PHP 7.4 kullanarak üretim sunucularımda opcache önyüklemesini ( RFC ) etkinleştirmek istiyorum . Symfony kullanıyorum , ancak bu tüm PHP için geçerlidir.
Yanıtlar:
Her şeyden önce eklemelisiniz:
opcache.preload=/path/to/project/preload.php
senin için php.ini
Daha sonra PHP betiğinize opcache_compile_file($file);
, önceden yüklemek istediğiniz her dosyayı iletmelisiniz.
Göre blogda yayınlamak önemsiz olmasını görüntülenir. Görünüşe göre Symfony, 4.4'ten bu yana, aşağıdakilerde ayarlanması gereken bir önyükleme betiği oluşturur php.ini
:
opcache.preload=/path/to/project/var/cache/prod/App_KernelProdContainer.preload.php
Yerel Docker ortamımda bazı testler yaptım ve işte böyle gitti:
OPcache olmadan PHP 7.3 (geçerli)
Requests per second: 8.75 [#/sec] (mean)
Time per request: 114.402 [ms] (mean)
OPcache olmadan PHP 7.4
Requests per second: 11.44 [#/sec] (mean)
Time per request: 87.417 [ms] (mean)
OPcache ile PHP 7.4, önyükleme olmadan (Apache + modphp)
Requests per second: 30.25 [#/sec] (mean)
Time per request: 33.053 [ms]
OPcache ile PHP 7.4, önyükleme olmadan (nginx + php fpm)
Requests per second: 40.00 [#/sec] (mean)
Ne yazık ki önyüklemeyi etkinleştiremedim :( Aşağıdaki hatalarla karşılaştım (hem Apache + Mod hem de Nginx + FPM'de):
double free or corruption (!prev)
child pid 17 exit signal Aborted (6), possible coredump (…)
Bu özellik bir WIP gibi görünüyor . Bu önyükleme özelliğini kullanabildiğim zaman bu cevabı tekrar doğrulayacağım. Genel olarak oldukça PHP sadece geçiş yaparak, +% 30 performans etkiledi ediyorum 7.3
için 7.4
.