2011-11-19 69 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