2013-05-20 47 views
1

我想运行php脚本(下面)命名为daemon.php作为使用unix的后台进程。运行一个php脚本作为使用unix的后台进程

#!/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 

而c ommand

ps | grep php 

返回

10584 ttys000 0:00.02 php daemon.php 

但没有被写入deamon1.log。谁能告诉我我做错了什么?

+0

你使用的是什么版本的Unix?我在GNU/Linux Debian下运行它没有任何问题。 –

+1

我怀疑用户和文件写入权限有问题。 cli用户和apache用户将不一样 – 2013-05-20 22:48:29

+0

我使用的是版本11.4.2 –

回答

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); 

注意文件的不同名称。只要确保你使用新文件。 如果可行,请使用所需的文件进行测试。 如果这不起作用,那么你知道这是一个权限问题。

+2

如果你不关闭文件,你将看不到任何写在外面的东西。 –

+0

感谢您的注意!答案已更新。 –

相关问题