Estoy usando Apache/2.4.29 con PHP 7.4.5 como módulo.
Apache y PHP se configuran con lito como usuario.
Configuración de virtualhost con configuración de PHP:
php_admin_value opcache.enabled 1 php_admin_value opcache.preload /home/lito/www/preload.php php_admin_value opcache.preload_user litophpinfo muestra la configuración de opcache:
opcache.enable On opcache.preload /home/lito/www/preload.php opcache.preload_user litoNo hay errores en el registro de apache.
Después de reiniciar apache, opcache_get_status no tiene ninguna clave relacionada con el estado de precarga ( preload_statistics ) y solo hay un script precargado (phpinfo.php actual):
Array ( [opcache_enabled] => 1 [cache_full] => [restart_pending] => [restart_in_progress] => [memory_usage] => Array ( [used_memory] => 9168872 [free_memory] => 125047784 [wasted_memory] => 1072 [current_wasted_percentage] => 0.00079870223999023 ) [interned_strings_usage] => Array ( [buffer_size] => 6291008 [used_memory] => 522888 [free_memory] => 5768120 [number_of_strings] => 10969 ) [opcache_statistics] => Array ( [num_cached_scripts] => 1 [num_cached_keys] => 1 [max_cached_keys] => 16229 [hits] => 1 [start_time] => 1587378881 [last_restart_time] => 0 [oom_restarts] => 0 [hash_restarts] => 0 [manual_restarts] => 0 [misses] => 3 [blacklist_misses] => 0 [blacklist_miss_ratio] => 0 [opcache_hit_rate] => 25 ) [scripts] => Array ( [/home/lito/www/phpinfo.php] => Array ( [full_path] => /home/lito/www/phpinfo.php [hits] => 0 [memory_consumption] => 1040 [last_used] => Mon Apr 20 12:39:15 2020 [last_used_timestamp] => 1587379155 [timestamp] => 1587378955 ) ) )¿No está disponible la precarga de opcache en Apache con PHP como módulo (sin un php.ini personalizado)?
¡Gracias!
ACTUALIZACIÓN: Probado agregando un archivo de precarga en /etc/php/7.4/apache2/php.ini y funciona bien.
Similar (para nginx con php-fpm): https://bugs.php.net/bug.php?id=79043#1578412872
Por lo que puedo decir, parece que la precarga no está en efecto cuando se configura de esta manera.
Respuesta del desarrollador principal de PHP:
sí, como la carga previa ocurre durante el inicio temprano del servidor, habilitarlo a través de php_admin_value no funciona.