如果PHP CLI脚本在后台运行,它如何检测?

时间:2012-01-22 15:26:25

标签: php background command-line-interface detection

我正在开发一个CLI PHP脚本,可以在前台或后台执行。如果在前台运行,我希望能够与用户交互获取输入信息。显然,如果使用'&'在后台启动脚本参数应跳过任何用户交互......

那么PHP脚本是否有办法检测它是否已在后台启动?

2 个答案:

答案 0 :(得分:1)

无法检测它是否在后台运行。我仍然没有找到任何办法。

一种方法是遍历流程列表并检查/usr/bin/php

的状态

最好的方法是使用参数(比如--daemon)。当这个参数被传递时,它将在后台运行,否则它将在前端打印有用的信息。

您可以使用System_Daemon pear package创建守护进程。

答案 1 :(得分:1)

有一个Unix frequently asked question(我通过this Stack Overflow post找到的)基本上声称它无法可靠地完成。本文给出的一个建议是检查stdin是否是终端:

sh: if [ -t 0 ]; then ... fi
C: if(isatty(0)) { ... }

我同意Pekka的评论,你应该简单地为脚本提供一个参数。 -i(用于交互式)选项有时用于此明确目的。如果未传递该参数,则可以假设您处于“自动”模式。