【问题标题】:Launch concurrent one-off Heroku dynos from PHP从 PHP 启动并发一次性 Heroku dynos
【发布时间】:2018-09-12 07:51:20
【问题描述】:

我正在从命令行运行一个(分离的)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 启动,所有这些都同时运行。但是,这似乎没有发生:执行的脚本似乎是从原始测功机运行的。

有什么想法吗?

【问题讨论】:

    标签: php heroku


    【解决方案1】:

    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 &");
    }
    

    【讨论】:

    • 谢谢,真的很有帮助,我试试。你碰巧知道我如何使用 shell_exec 来启动一个新的一次性 Heroku dyno 吗?似乎默认行为是它在正在运行的测功机上运行进程,这违背了我这样做的对象(即在多个测功机上同时运行每个脚本)
    • 我已经弄清楚了如何使用 Heroku 的 API 来做我想做的事情。
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 2014-07-19
    • 2011-05-28
    • 2023-03-23
    • 2013-04-28
    • 2018-02-21
    相关资源
    最近更新 更多