1

unix を使用して、daemon.php という名前の php スクリプト (以下) をバックグラウンド プロセスとして実行しようとしています。

#!/usr/bin/php
<?php
$count = 0;
while(true){
    $count = $count + 1;
    file_put_contents('daemon1.log', $count, FILE_APPEND);
    sleep(1);  
}
?>

以下のコマンドを使用してフォアグラウンドで実行すると

php daemon.php

ファイル deamon1.log への書き込みが開始されます。また、次のコマンドを入力すると:

ps | grep php

私は出力を取得します

10573 ttys000    0:00.20 php daemon.php

コマンドを使用してバックグラウンドプロセスとして実行しようとすると

php daemon.php &

コンソール出力を取得します

[1] 10584

そして、コマンド

ps | grep php

戻り値

10584 ttys000    0:00.02 php daemon.php

しかし、deamon1.log には何も書き込まれません。誰が私が間違っているのか教えてもらえますか?

4

1 に答える 1

0

別のアプローチを試してください。

$file_handler = fopen( 'daemon1tempname.log', 'a+') or die ('Can not work with the File!');

$count = 0;
while(true){
    $count = $count + 1;
    fwrite($file_handler, "Test {$count}\n" );
    sleep(1);  
}
fclose($file_handler);

ファイルの名前が異なることに注意してください。新しいファイルで作業していることを確認してください。それが機能する場合は、必要なファイルでテストします。それでもうまくいかない場合は、権限の問題であることがわかります。

于 2013-05-22T08:16:19.353 に答える