Sla*_*yoo 5 laravel envoyer.io laravel-5.6
我在使用执行我创建的 artisan 命令的 envoyer 部署项目时遇到问题。
该命令获取我的所有用户,执行另一个 artisan 命令 ( $this->call('command')) 并通过迭代所有用户来执行它的操作。
问题就出在这里:
foreach($usernames as $username) {
shell_exec('php ' . base_path('artisan') . ' command ' . $username . ' > /dev/null 2>/dev/null &');
}
Run Code Online (Sandbox Code Playgroud)
此命令在后台启动脚本。它的手动执行没有任何问题,并且不会以超时结束(执行大约需要 1 秒),但在 envoyer 中,它不会在部署步骤中停止运行,并且尽管执行完美,但会在超时时失败。
附加信息:
由于我在后台运行脚本的原因:
我启动的脚本打开一个套接字,他将 24/7 监听该套接字,直到用户手动取消它。
我刚刚创建了一个较小的示例以确保一切正常:
文件forever.php将保持无限循环,每 5 秒打印一些内容:
<?php
while (true) {
echo "I am still in the loop $argv[1]\n";
sleep(5);
}
Run Code Online (Sandbox Code Playgroud)
文件script.php将调用forever.php父进程的多个实例并与父进程分离(与您所做的相同):
<?php
for ($i = 0; $i < 5; $i++) {
shell_exec("php forever.php $i > /dev/null 2>/dev/null &");
}
Run Code Online (Sandbox Code Playgroud)
执行时php script.php,显然有5个实例在forever.php运行。所以你的代码看起来不错(你展示的部分)。
对于你的情况,我唯一能想到的是:
希望它对您有所帮助,如果您需要更多帮助,请提供更多信息。
| 归档时间: |
|
| 查看次数: |
549 次 |
| 最近记录: |