php[world] 2019 — 25 years of PHP

opcache_compile_file

(PHP 5 >= 5.5.5, PHP 7, PECL ZendOpcache > 7.0.2)

opcache_compile_fileСкомпилировать и закешировать, но не исполнять скрипт PHP

Описание

opcache_compile_file ( string $file ) : bool

Эта функция компилирует PHP-скрипт и помещает его в кеш опкодов, но не запускает его. Можно использовать для прогрева кеша после перезапуска веб-сервера.

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

file

Путь к скрипту PHP.

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

Возвращает TRUE, если file успешно скомпилирован или FALSE в случае возникновения ошибки.

Ошибки

Если file не может быть загружен или скомпилирован, будет выдана ошибка уровня E_WARNING. Для подавления предупреждения можно использовать @.

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

add a note add a note

User Contributed Notes 2 notes

up
9
IceNV
1 year ago
Be aware that opcache will only compile and cache files older than the script execution start.

For instance, if you use a script to generate cache files (e.g. you don't have access to shmop and rely on opcache for in-memory data caching instead), opcache_compile_file will not include the generated file in the cache, because its modification time is after the script start.

The workaround is to use touch() to set a date before the script execution date, then opcache will compile and cache the generated file.
up
-24
cslistener
4 years ago
<?php
/**
* Get files that specified suffix
* @param $path
* @param array $files
* @return array
*/
// http://www.apieye.com/528.html
function getfiles( $path , &$files = array() ) {
    if ( !
is_dir( $path ) ) return null;
   
$handle = opendir( $path );
    while (
false !== ( $file = readdir( $handle ) ) ) {
        if (
$file != '.' && $file != '..' ) {
           
$path2 = $path . '/' . $file;
            if (
is_dir( $path2 ) ) {
               
getfiles( $path2 , $files );
            } else {
                if (
preg_match( "/\.(php|php5)$/i" , $file ) ) {
                   
$files[] = $path2;
                }
            }
        }
    }
    return
$files;
}
$files = getfiles('/png/www/example.com/public_html/app/wordpress');
$br = (php_sapi_name() == "cli") ? "\n" : "<br />";
foreach(
$files as $file){
 
opcache_compile_file($file);
  echo
$file.$br;
}
To Top