opcache_invalidate

(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL ZendOpcache >= 7.0.0)

opcache_invalidateАннулирует закешированный скрипт

Описание

function opcache_invalidate(string $filename, bool $force = false): bool

Функция аннулирует скрипт в кеше операционного кода в общей памяти. При пропуске аргумента force или при передаче в аргументе значения false скрипт аннулируется, только если время изменения скрипта новее времени изменения закешированных опкодов. При включённой директиве opcache.file_cache функция также аннулирует запись в файловом кеше.

Список параметров

filename
Путь к скрипту, кеш которого требуется аннулировать.
force
При установке значения true кеш скрипта принудительно аннулируется, даже если после добавления в кеш скрипт не изменялся.

Возвращаемые значения

Функция возвращает true при аннулировании кеша опкодов файла по пути filename или если файл не кешировался. При отключённом кешировании операционного кода возвращается false.

Смотрите также

  • opcache_compile_file() - Компилирует и кеширует PHP-скрипт без исполнения
  • opcache_reset() - Сбрасывает содержимое кеша опкодов
Добавить

Примечания пользователей 3 notes

up
15
joel at taotesting dot com
11 years ago
Beware that only existing files can be invalidated.

Instead of removing a file from opcache that you have delete, you need to call opcache_invalidate before deleting it.
up
8
dmitry dot balabka at gmail dot com
6 years ago
opcache_invalidate tries to acquire SHM lock. When the lock can not be acquired opcache_invalidate will return FALSE. During multiple concurrent opcache_invalidate calls with higher probability, the function will return FALSE.
up
9
kaare at colourbox dot com
10 years ago
Note that invalidation doesn't actually evict anything from the cache, it just forces a recompile. You can verify this by calling opcache_get_status() and seeing that the invalidated script is not actually removed from "scripts". This means it cannot be used as a more graceful alternative to opcache_reset() when the cache is full ("cache_full":true in status). The cache will eventually fill up and refuse to cache new requests if you do atomic deployment of PHP code by changing the web server's document root. It appears opcache_reset() is the only way to prevent this, but opcache_reset() can disable the cache for any amount of time while attempting to restart, causing load spikes.
To Top