Функция opcache_is_script_cached в php5.5.11
Недавно я задал вопрос "есть ли способ найти, был ли скрипт запущен opCache", и не смог найти ответ. Прямо сейчас, глядя на журнал изменений Php5.5.11, я обнаружил, что новая функция
OPCache:
Добавлена функция opcache_is_script_cached().
был добавлен. Основываясь на имени, он делает именно то, что я хочу, но проблема в том, что я не могу найти какую-либо документацию по этой функции.
Может кто-нибудь сказать мне точно, что эта функция делает? Пожалуйста, воздержитесь от диких догадок.
3 ответа
Прочитав этот пост (и некоторые другие примечания к руководству по PHP), я понял, что эту функцию еще предстоит документировать. В любом случае, недавно я потратил немного времени, чтобы добавить эту функцию в документацию PHP:
http://php.net/manual/en/function.opcache-is-script-cached.php
Выдержка из руководства:
opcache_is_script_cached - сообщает, кэшируется ли скрипт в OPCache.
boolean opcache_is_script_cached ( string $file )
Эта функция проверяет, был ли PHP-скрипт кэширован в OPCache. Это может быть использовано для более легкого обнаружения "потепления" кеша для конкретного скрипта.
Возвращает
TRUE
если$file
кэшируется в OPCache,FALSE
иначе.
Вы найдете исходный код этой функции в нижней части файла zend_accellerator_module.c, и он, похоже, делает то, что вы хотите. Похоже, что он принимает один аргумент - имя файла сценария, который вы проверяете. Код в filename_is_in_cache
Кажется, он обрабатывает случаи, когда один и тот же файл указан разными строками ('filename.php' vs '/var/www/filename.php'), но вы можете копать глубже или проверить самостоятельно, чтобы проверить.
Кроме того, вот тестовый пример, показывающий пример, хотя он очень минимален.
На самом деле документированная функция opcache_get_status делает то, что вы хотите. Просто позвоните, передав true
параметр в нем и проверка scripts
раздел в возвращаемом массиве.