私はデーモンとして実行されるPHPスクリプトを持っています。 8つのスレッドが同時に実行されます。PHPとCron - chdirが動作しない
8つのスレッドが常に実行されていることを確認するには、以下のPHPスクリプトはdaemon.phpスクリプトと同じディレクトリにあるのcronから実行される:上記
<?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
ではなく)。
ディレクトリ内からphp daemon.php
で直接daemon.phpを実行すると、これは発生せず、すべてが意図どおりに機能します。
非常にオフの動作です。スクリプトがそのディレクトリの中から直接実行されたときのように、エフェクトがcronジョブとまったく同じになるように設定するにはどうすればよいですか?