【发布时间】:2012-04-13 13:38:24
【问题描述】:
我的项目需要 3 个使用 if-else 条件运行的 php 脚本。第一个脚本加载到站点的索引页面上以检查是否设置了条件,如果设置了,则调用第二个脚本。第二个脚本检查是否设置了其他条件,如果一切正常,它最终会调用最后一个脚本。
现在我可以通过在 if 语句中包含脚本来做到这一点,但由于最终结果是占用资源的 MySQL 转储,我需要它独立于原始触发页面运行。
此外,这些脚本应在触发后继续执行其操作,而不管用户在索引页面上的操作如何。
最后一件事:它应该能够在 win 和 nix 上运行。
你会怎么做?
下面的代码有意义吗?
if ($blah != $blah-size){
shell_exec ('php first-script.php > /dev/null 2>/dev/null &');
}
//If the size matches, die
else {
}
提前一百万谢谢。
更新:以防万一其他人正在经历同样的交易。 将脚本作为 cgi 运行时,php 中似乎存在错误,但 Apache 中的命令行适用于我测试过的所有版本。
查看错误https://bugs.php.net/bug.php?id=11430
所以我改为这样调用脚本:
exec("php-cli mybigfile.php > /dev/null 2>/dev/null &");
或者您可以将其称为 shell。它可以在 nix 系统上运行,但我的本地 Windows 没有希望,所以如果有人在 Windows 上运行它并且它可以工作,请更新它。
【问题讨论】:
-
创建另一个脚本工作者,由 cron/windows 调度程序运行
-
这样做的重点是不使用 cron 并被用户触发。:)
标签: php system exec shell-exec