19

symlink スタイルのデプロイ後に PHP opcache をリセットしようとしています。opcache_reset.php私のプロジェクトにはwget、ドキュメント ルートのシンボリック リンクの置換後に実行されるファイルがあります。

<?php
clearstatcache(true);
opcache_reset();

それにもかかわらず、古いファイルはまだ使用されています。出力によるとopcache_get_status()、数はmanual_restarts増加し、last_restart_time最新の状態を保っていますが、ファイル パスは古いままです。opcache_reset.php展開してから 1 分ほど経ってから手動で呼び出す必要があります。

PHP のバージョンは 5.5.6、ZendOpcache は 7.0.3-dev です。Opcache 構成:

opcache.blacklist_filename => no value
opcache.consistency_checks => 0
opcache.dups_fix => Off
opcache.enable => On
opcache.enable_cli => On
opcache.enable_file_override => Off
opcache.error_log => no value
opcache.fast_shutdown => 1
opcache.force_restart_timeout => 180
opcache.inherited_hack => On
opcache.interned_strings_buffer => 8
opcache.load_comments => 1
opcache.log_verbosity_level => 1
opcache.max_accelerated_files => 4000
opcache.max_file_size => 0
opcache.max_wasted_percentage => 5
opcache.memory_consumption => 128
opcache.optimization_level => 0xFFFFFFFF
opcache.preferred_memory_model => no value
opcache.protect_memory => 0
opcache.restrict_api => no value
opcache.revalidate_freq => 60
opcache.revalidate_path => Off
opcache.save_comments => 1
opcache.use_cwd => On
opcache.validate_timestamps => On
4

3 に答える 3

41

ZendOptimizerPlus issueで説明されている理由と 2 つの考えられる解決策。$realpath_rootnginx構成で使用して解決しました:

fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
于 2014-05-28T07:00:47.173 に答える
3

なんらかの理由で$realpath_root、symlink スタイルの展開でfastcgi_param を使用できない場合はopcache.revalidate_path = On、php ini 構成で を設定してみてください。このiniディレクトリが内部でどのように機能するかを説明する適切なドキュメントを見つけることができませんでしたが、シンボリックリンクを変更した後は機能しました. これが誰にも役立つことを願っています。

于 2018-10-18T08:15:59.163 に答える