shell_exec()
WordPress プラグインの一部としてバックグラウンド PHP プロセスを実行しようとしています。
これがサンプルです。
/* Plugin Name: Sample Background Process */
add_action('init', 'Sample_Background_Process');
function Sample_Background_Process() {
$file = __DIR__ . '/log.html';
$current = date('l jS \of F Y h:i:s A') . ': accessed<br />';
file_put_contents($file, $current, FILE_APPEND);
}
プラグイン フォルダにログを作成し、ページがアクセスされるたびにテキストを追加します。
次に、この行を追加しましたshell_exec('php "' . ABSPATH . '/index.php" > /dev/null 2>/dev/null &');
。そのため、バックグラウンド プロセスがページにアクセスし、ログ ファイルにテキストを追加する関数を実行する必要があります。しかし、それはしていないようです。1 回のページ読み込みで、ログ ファイルに 2 行が生成されると思います。ただし、追加されるのは 1 行だけです。つまり、このように呼び出された場合、バックグラウンド プロセスは実行されないか、WordPress は何もしません。
add_action('init', 'Sample_Background_Process');
function Sample_Background_Process() {
$file = __DIR__ . '/log.html';
$current = date('l jS \of F Y h:i:s A') . ': accessed<br />';
file_put_contents($file, $current, FILE_APPEND);
shell_exec('php "' . ABSPATH . '/index.php" > /dev/null 2>/dev/null &');
}
私は何を間違っていますか?
Windowsサーバーでテストしているため、実際のスクリプトのパスはphp.exeへのパスによって変更されますphp
。shell_exec()
他の PHP スクリプトでは問題なく動作します。
ありがとう。