【发布时间】:2014-10-27 08:46:53
【问题描述】:
我有一个 PHP 脚本,它使用以下代码在后台执行另一个 PHP 脚本:
exec("php myScript.php >/dev/null 2>&1 &");
在我的开发服务器上,myScript.php 使用 PHP CLI 运行(我已使用 php_sapi_name() 进行了检查),并按预期运行。但是,在实时服务器上,脚本似乎使用 PHP CGI 运行。这会导致服务器尝试运行无数个相同的脚本,并且我的脚本权限被暂停。
我已经看到了关于运行 PHP CLI 脚本的正确命令的各种建议(取决于确切的服务器配置),包括“php”(这是我的开发服务器使用的)、“php-cli”、 “php5”和“php5-cli”。有什么方法可以确定实时 Web 服务器上的正确命令吗?显然,我并不热衷于一一尝试,因为错误的选择可能会让我再次被停职。
【问题讨论】:
-
我不明白为什么 php 的用户\所有者会影响脚本的运行方式;特别是“这会导致服务器尝试运行无数个相同的脚本”
-
我怀疑大量 CGI 实例是由您的 CGI 脚本等待 CLI 调用的返回值引起的。尝试使用
cron代替后台任务。 -
这是您的服务器还是托管解决方案。您可能没有执行权限或缺少 PHP 扩展。您可以远程访问服务器并在 CLI 中手动运行脚本进行测试吗?
-
你是在循环中调用这个
exec函数吗?该循环是否终止? myscript.php 是否在循环中包含另一个 exec 调用?有许多因素可能导致无限生成。其中大部分归结为非终止循环
标签: php command cgi command-line-interface