2014-05-19 7 views
18

Ich versuche, PHP Opcache nach einer Symlink-Stil-Bereitstellung zurücksetzen. Es ist die opcache_reset.php Datei in meinem Projekt, das von wget nach dem Dokument root Symlink Ersatz ausführt:PHP Opcache Reset + Symlink-Stil-Bereitstellung

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

Trotz alledem werden die alten Dateien noch verwendet. Laut opcache_get_status() Ausgabe wird die Nummer manual_restarts erhöht, last_restart_time bleibt auf dem neuesten Stand, aber die Dateipfade bleiben veraltet. Ich muss opcache_reset.php manuell nach einer Minute oder nach der Bereitstellung anrufen, um die Dinge richtig zu machen.

PHP-Version ist 5.5.6, ZendOpcache ist 7.0.3-dev. Opcache config:

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 

Antwort

37

Gründe und zwei mögliche in der ZendOptimizerPlus issue beschriebenen Lösungen. Wir lösten es durch $realpath_root in der nginx config:

fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; 
fastcgi_param DOCUMENT_ROOT $realpath_root; 
+1

Ich benutze die gleichen NGINX Richtlinien. Allerdings muss ich php fpm neu laden, um sicherzustellen, dass php fpm den Code aus dem neuen Verzeichnis verwendet. Das Nachladen von fpm lässt mich allerdings einige Anfragen verlieren. Wenn ich fpm nicht neu lade, führt es immer noch Code im alten Verzeichnis aus. Das gleiche Problem hier beschrieben: http://serverfault.com/questions/630573/atomic-deploymements-with-nginx-and-php-fpm Können Sie helfen? –

0

ich sah sich auch diese Frage dann schließlich mache ich eine Lösung.

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

Sie können zu einem automatisch erraten fastcgi Server verbinden (wenn /var/run/php5-fpm.sock eine Datei oder 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 

Beispiel:

[[email protected] ~]# 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     | 
+----------------------+---------------------------------+ 
[[email protected] ~]# 
[[email protected] ~]# 
[[email protected] ~]# php cachetool.phar opcache:reset 
[[email protected] ~]# 
[[email protected] ~]# 
[[email protected] ~]# 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        | 
+----------------------+---------------------------------+ 

Sie können feststellen, dass der Speicher, Cache-Schlüssel, Treffer everythings 0 wurde :-). Es ist sehr nützlich. Ich habe es auch leicht mit Ansible intrigiert.

Seine Anwendung für APCU und andere stopft: Überprüfen Sie mehr dort http://gordalina.github.io/cachetool/