2013-05-20 43 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

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

相關問題