php deployment symlink opcache

Despliegue de PHP opcache+implementación estilo symlink



deployment (3)

Razones y dos soluciones posibles descritas en el problema ZendOptimizerPlus . Lo resolvimos usando $realpath_root en la configuración de nginx:

fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root;

Estoy tratando de restablecer PHP Opcache después de una implementación de estilo de enlace simbólico. Hay opcache_reset.php archivo opcache_reset.php en mi proyecto que se ejecuta por wget después de la sustitución del enlace simbólico de la raíz del documento:

<?php clearstatcache(true); opcache_reset();

A pesar de eso, los archivos antiguos todavía se utilizan. De acuerdo con la opcache_get_status() de opcache_get_status() , el número de manual_restarts aumenta, last_restart_time mantiene actualizado, pero las rutas de los archivos permanecen desactualizadas. Necesito llamar a opcache_reset.php manualmente después de opcache_reset.php un minuto después de la implementación para hacer las cosas bien.

La versión de PHP es 5.5.6, ZendOpcache es 7.0.3-dev. Configuración de Opcache:

opcache.blacklist_filename => no value opcache.consistency_checks => 0 opcache.dups_fix => Off opcache.enable => On opcache.enable_cli => On opcache.enable_file_override => Off opcache.error_log => no value opcache.fast_shutdown => 1 opcache.force_restart_timeout => 180 opcache.inherited_hack => On opcache.interned_strings_buffer => 8 opcache.load_comments => 1 opcache.log_verbosity_level => 1 opcache.max_accelerated_files => 4000 opcache.max_file_size => 0 opcache.max_wasted_percentage => 5 opcache.memory_consumption => 128 opcache.optimization_level => 0xFFFFFFFF opcache.preferred_memory_model => no value opcache.protect_memory => 0 opcache.restrict_api => no value opcache.revalidate_freq => 60 opcache.revalidate_path => Off opcache.save_comments => 1 opcache.use_cwd => On opcache.validate_timestamps => On


Si por alguna razón no puede usar fastcgi_param con $realpath_root y usa la implementación del estilo de enlace simbólico, intente configurar opcache.revalidate_path = On en su configuración php ini. No pude encontrar ninguna buena documentación que explique cómo funciona este directorio ini bajo el capó, pero funcionó después de que cambié los enlaces simbólicos. Espero que esto ayude a cualquiera.


También me enfrenté a ese problema y finalmente finalmente hago una solución.

$ curl -sO http://gordalina.github.io/cachetool/downloads/cachetool.phar $ chmod +x cachetool.phar

Puede conectarse a un servidor fastcgi adivinado automáticamente (si /var/run/php5-fpm.sock es un archivo o 127.0.0.1:9000)

apc apc:bin:dump Get a binary dump of files and user variables apc:bin:load Load a binary dump into the APC file and user variables apc:cache:clear Clears APC cache (user, system or all) apc:cache:info Shows APC user & system cache information apc:cache:info:file Shows APC file cache information apc:key:delete Deletes an APC key apc:key:exists Checks if an APC key exists apc:key:fetch Shows the content of an APC key apc:key:store Store an APC key with given value apc:sma:info Show APC shared memory allocation information opcache opcache:configuration Get configuration information about the cache opcache:reset Resets the contents of the opcode cache opcache:status Show summary information about the opcode cache opcache:status:scripts Show scripts in the opcode cache

Ejemplo:

[root@ip-172-31-5-244 ~]# php cachetool.phar opcache:status +----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 42.71 MiB | | Memory free | 85.29 MiB | | Memory wasted (%) | 0 b (0%) | | Strings buffer size | 8 MiB | | Strings memory used | 5.31 MiB | | Strings memory free | 2.69 MiB | | Number of strings | 103847 | +----------------------+---------------------------------+ | Cached scripts | 1261 | | Cached keys | 2748 | | Max cached keys | 7963 | | Start time | Thu, 08 Feb 2018 02:28:56 +0000 | | Last restart time | Thu, 08 Feb 2018 03:10:19 +0000 | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 1 | | Hits | 47839 | | Misses | 1269 | | Blacklist misses (%) | 0 (0%) | | Opcache hit rate | 97.415899649752 | +----------------------+---------------------------------+ [root@ip-172-31-5-244 ~]# [root@ip-172-31-5-244 ~]# [root@ip-172-31-5-244 ~]# php cachetool.phar opcache:reset [root@ip-172-31-5-244 ~]# [root@ip-172-31-5-244 ~]# [root@ip-172-31-5-244 ~]# php cachetool.phar opcache:status +----------------------+---------------------------------+ | Name | Value | +----------------------+---------------------------------+ | Enabled | Yes | | Cache full | No | | Restart pending | No | | Restart in progress | No | | Memory used | 10.43 MiB | | Memory free | 117.57 MiB | | Memory wasted (%) | 0 b (0%) | | Strings buffer size | 8 MiB | | Strings memory used | 545.69 KiB | | Strings memory free | 7.47 MiB | | Number of strings | 103847 | +----------------------+---------------------------------+ | Cached scripts | 0 | | Cached keys | 0 | | Max cached keys | 7963 | | Start time | Thu, 08 Feb 2018 02:28:56 +0000 | | Last restart time | Thu, 08 Feb 2018 03:19:00 +0000 | | Oom restarts | 0 | | Hash restarts | 0 | | Manual restarts | 2 | | Hits | 0 | | Misses | 2 | | Blacklist misses (%) | 0 (0%) | | Opcache hit rate | 0 | +----------------------+---------------------------------+

Puede notar que la memoria, las claves de caché, los aciertos se convirtieron en 0 :-). Es muy útil. También lo intrigé con Ansible fácilmente.

Su aplicación para apcu y otros productos: consulte más http://gordalina.github.io/cachetool/