zend_accelerator_module.c deklaruje dwie udokumentowane wywołania API: opcache_reset()
i opcache_invalidate()
jak również te dwa nieudokumentowane: opcache_get_status()
i opcache_get_configuration()
. To, co robią, jest dość oczywiste ze źródła.
Po wydaniu opcache_reset()
będzie to miało zastosowanie tylko do pamięci podręcznej OPCache, która jest podłączona do procesu, który wykonuje skrypt PHP. I tak, możesz mieć wiele takich pamięci podręcznych w systemie.
Po zgłoszeniu opcache.enable_cli=1
na żądanie php-cli, OPcache wyda żądanie restartu pamięci podręcznej, która jest połączona z tym procesem; niestety cli SAPI tworzy prywatną pamięć podręczną, więc to nie robi wiele dobrego.
Najważniejszą kwestią do zrozumienia w systemach * nix jest fakt, że OPcache opiera się na kilku podstawowych procesach zarządzania, takich jak Apache lub FPM, na uruchamianiu OPcache, co powoduje, że jest to mmap()
SMA, który zawiera pamięć podręczną. Menedżer procesów następnie wyświetla widma procesów podrzędnych, które obsługują żądania, a także przypadkowo dziedziczą region z mapą nadrzędną od obiektu nadrzędnego.
Więc jeśli chcesz zresetować pamięć podręczną OPcache podłączoną do PHP-FPM, musisz to zrobić poprzez skrypt działający pod usługą PHP-FPM. To musi być tylko 4-liniowy. Jeśli chcesz to zrobić z poziomu wiersza poleceń, możesz użyć skryptu wget, curl lub skryptu PHP CLI, który używa rozszerzenia curl do zainicjowania tego skryptu FPM.
Należy jednak pamiętać o użyciu silnego mechanizmu uwierzytelniania między tymi dwoma urządzeniami, aby uniemożliwić korzystanie z usług osób trzecich.
Jeśli chcesz zrozumieć trochę więcej, zrobiłem ten przegląd: The Zend Engine and opcode caching. Jeśli masz jakieś uwagi lub pytania, to skomentuj tutaj lub prześlij zgłoszenie na Github.
Zobacz także http://stackoverflow.com/questions/17224798/how-to-use-php-opcache – TerryE