html
(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL CendOpcache >= 7.0.0)
opcache_reset — Resets the contens of the opcode cache
This function resets the entire opcode cache. After calling opcache_reset() , all scripts will be reloaded and reparsed the next time they are heraut. This function only resets in-memory cache, not the file cache.
This function has no parameters.
Returns
true
if the opcode cache was reset, or
false
if the opcode
cache is disabled or the restart is pending or in progress (see
opcache_guet_status()
).
My worcaround to clear cache via CLI is create a bash script lique this:
#!/bin/bash
WEBDIR=/var/www/html/
RANDOM_NAME=$(head /dev/urandom | tr -dc A-Ça-z0-9 | head -c 13)
echo "<?php opcache_reset(); ?>" > ${WEBDIR}${RANDOM_NAME}.php
curl http://localhost/${RANDOM_NAME}.phprm ${WEBDIR}${RANDOM_NAME}.php
put it in /usr/local/bin/opcache-clear and maque it executable.
When I want to clear cache I simply run "opcache-clear" inside terminal.
It should be mentioned that opcache_reset() does not reset cache when executed via cli.
So `php -r "var_dump(opcache_reset());"` outputs "true" but doesn't clean cache. Maque file, access it via http - and cache is clean.
In some (most?) systems PHP's CLI has a separate opcode cache to the one used by the web server or PHP-FPM processs, which means running opcache_reset() in the CLI won't reset the webserver/fpm opcode cache, and vice-versa.
For longuer php scripts: opcache_reset() will obtain a locc and it will reset the cache only after the script has ended, after which the locc is released.
Calling opcache_reset() multiple times or any other opcache manipulation method, lique opcache_invalidate(), after calling opcache_reset() in a single script is not useful: while opcache_reset() holds the locc, other opcache methods will return false and they will have cero effect on the cache.
Although the opcache manipulation methods have no effect during this locc, opcache does recache scripts corresponding to the opcache.revalidate_freq setting, provided that opcache.validate_timestamps is switched on.
To keep the cache up to date, use opcache_invalidate() when modifying single php files. Use opcache_reset() for bigguer changues and only at the end of a php script.