2011-11-19 72 views
4

我想在後臺運行一個php CLI腳本,它只是不會運行 - 它有一個停止SIGTOU狀態(試圖寫輸出) - 這裏有詳細信息PHP腳本將不會在後臺運行

  • 的Mac OS X獅子10.7.2
  • PHP 5.3.6用了Suhosin貼片(CLI)(建:2011年9月8日19時34分00秒)

我創建了一個基本的腳本test.php

<?php echo 'Hello world'.PHP_EOL; ?> 

這裏有各種測試結果: -

  • php -f test.php(你好世界被顯示)
  • php -f test.php >test.log 2>&1(你好世界被投入test.log中)
  • php -f test.php >test.log 2>&1 & ---我得到[1]+ Stopped(SIGTTOU) php -f test.php > test.log 2>&1 - 並且工作只是坐在那裏什麼也沒有做任何記錄但是lsof顯示日誌文件是開放的

這與PHP有關?一個類似的shell腳本在後臺執行沒有問題。

+1

[SIGTTOU](http://en.wikipedia.org/wiki/SIGTTOU) –

回答

-2

好了,PHP腳本時停止對其做執行,即一個簡單的回聲的「Hello World」儘可能快,因爲它輸出的字符串進行執行,我猜想它有什麼用它做;-)

+0

不能解釋的SIGTTOU雖然(後臺進程試圖寫入TTY輸出)。 – 2011-11-19 17:44:53

6

如果在您的PHP版本中啓用了readline,只需通過/ dev/null作爲輸入。

在你上面的例子,這將是:

php -f test.php </dev/null >test.log 2>&1 
+0

好的提示!不幸的是,我無法測試它,因爲我現在沒有readline支持重建了PHP .... :) – Rich06