gpt4 book ai didi

PHP5,Shell_exec 等待生成的 linux shell 任务完成

转载 作者:太空宇宙 更新时间:2023-11-04 03:45:28 25 4
gpt4 key购买 nike

我正在尝试从 PHP5 启动一个将运行 24 小时的 Linux shell 脚本,但我希望网页在几秒钟内返回。我虽然可以通过创建任务的脚本来解决这个问题,但它似乎不起作用。

几天来我一直在寻找解决方案或“一劳永逸/一劳永逸”的选项,但没有任何运气。

以下示例显示了该问题。

在 PHP 5 中,我进行了以下调用之一(此时尝试了很多)

passthru("dummy_script.sh");

system("dummy_script.sh");

shell_exec("dummy_script.sh");

虚拟脚本如下所示:

#!/bin/sh
{
while true
do
sleep 1
done
} &

我可以看到该进程已启动,但在我创建“killall dummy_script.sh”之前,网页不会返回。如果我在终端中手动运行脚本,它会立即返回并生成循环。

有谁知道我可以在不让网页等待的情况下生成任务的方法吗?

希望大家能够帮助我,我将不胜感激。

最佳答案

回答您的问题:

  1. 您可以开始查看pcntl_fork 。或者您可以查看this 。基本上,您正在使用 native fork 来 fork 长时间运行的进程,因此您的 php 前端不必等待。
  2. 如果您喜欢冒险,您可以将您的“工作”(您对这个长时间运行的流程的请求)放入数据库中。然后,一个 cron 作业检查数据库中是否有传入请求,并执行该进程。
  3. 另一种方法是使用 resque ,但此时不要打扰。

关于PHP5,Shell_exec 等待生成的 linux shell 任务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28361765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com