既に実行中のプロセスを強制終了しようとする単純なスクリプトがあります。同じためにposix_killを使用しています。コマンド シェルから実行するとスクリプトは正常に実行されますが、ブラウザから実行すると機能しません。
<?php
$taskid = 33;
killProcess($taskid);
function killProcess($taskid) {
$ppid = getPID($taskid);
echo "process id -- $ppid\n";
$pids = preg_split('/\s+/', `ps -o pid --no-heading --ppid $ppid`);
var_dump($pids);
foreach($pids as $pid) {
if(is_numeric($pid)) {
echo "Killing $pid\n";
posix_kill($pid, 15);
}
}
}
?>
私は常に次の出力を取得します。これは、スクリプトが正常に実行されていることを意味しますが、プロセスが強制終了されていないことを意味します: '4633' (長さ = 4) 2 => 文字列 '' (長さ = 0) 4633 を殺す
Apache の「error.log」ファイルを調べたところ、ブラウザから実行するたびに次のようなエントリが追加されることがわかりました。 [Sat Jun 23 12:24:55 2012] [error] [client 127.0. 0.1] ファイルが存在しません: /var/www/favicon.ico
残念ながら、このエラーからは、何が問題なのかについて多くの情報が得られません。私はphp.iniの設定をチェックアウトしましたが、何か問題があるようには見えません(私が持っている限られた理解によると)。「disabled_functions」リストなどにposix_killが表示されないか、プロセスの実行を妨げるその他の設定がありません。
助けていただければ幸いです!!
ありがとう、カピル