デーモンとして実行されるPHPスクリプトがあります。一度に8つのスレッドが実行されます。
8つのスレッドが常に実行されていることを確認するために、daemon.phpスクリプトと同じディレクトリにあるcronから次のPHPスクリプトが実行されます。
<?php
chdir('/root/fb');
if (file_exists('pause')) die();
exec('ps ax | grep -v grep | grep daemon.php',$output);
$output=implode("\n",$output);
$num=8-substr_count($output,'daemon.php');
if ($num>0)
{
for($run=0; $run<$num; $run++)
{
exec('php daemon.php > /dev/null 2>&1 &');
sleep(20);
}
}
?>
上記はdaemon.phpスクリプトを正常に実行しますが、その後、何か奇妙なことが起こり、daemon.phpスクリプト自体は、別のディレクトリにあると見なす場合と、別のディレクトリにあると見なす場合があります。具体的には、exec
他のアプリを実行するために多くの関数を使用しますが、これらの多く(すべてではありません)は、元のディレクトリに戻っており、ではないと考えています/root/fb
。
ディレクトリ内から直接daemon.phpを実行するとphp daemon.php
、これは発生せず、すべてが意図したとおりに機能します。
非常にオフな動作。スクリプトがディレクトリ内から直接実行される場合と、cronジョブからの効果がまったく同じになるように設定するにはどうすればよいですか?