首页 > 解决方案 > 从 PHP 启动并发一次性 Heroku dynos

问题描述

我正在从命令行运行一个(分离的)PHP 脚本,该脚本本身用于shell_exec()启动其他 PHP 脚本。我曾预计这些脚本中的每一个都会几乎立即启动,但它似乎正在等待一个完成,然后代码继续执行下一个。

这基本上就是我正在运行的。如何让我的脚本继续通过 foreach 循环而不等待每个循环shell_exec()终止?

foreach ($rows as $row) {
    $output = shell_exec("php path/to/file.php $estab_code") ;
}

真的,我在这里的预期结果是,每个都shell_exec()应该触发一个新的一次性 Heroku dyno 来启动,所有这些都同时运行。但是,这似乎没有发生:执行的脚本似乎是从原始测功机运行的。

有任何想法吗?

标签: phpheroku

解决方案


shell_exec 等待命令返回一些东西。为了使事情立即发生并为空,您可以在每个命令上添加以下内容:

> /dev/null 2>/dev/null &

像这样的东西:

foreach ($rows as $row) {
    $output = shell_exec("php path/to/file.php $estab_code > /dev/null 2>/dev/null &");
}

推荐阅读