我有一个网页,在将页面内容返回给最终用户之前,它将创建一大堆多线程调用。这个php页面的内容不依赖于它创建的线程。页面内容可以(并且很可能会)在线程完成之前完成
这是一个伪代码
<?php
// Step 1: Start php multithreading
// CODE HERE (will probably take 20 seconds to finish)
// Step 2: Do other stuff and return the php page, mostly static things using html
// CODE HERE (will probably take 1 second to return)
?>
现在,如果你仔细观察一下,网页仍将是“#34; loading&#34;直到上面的步骤1的代码完成(即,页面将在Web浏览器上显示旋转图标,直到它完全完成),这大约是20秒。
此外,如果网页关闭,步骤1中的脚本将被中途终止。
现在,我想做以下事情:
如何让步骤1的主题独立于页面?即,如果页面关闭,则线程继续运行。
此外,由于步骤1的主题独立于页面,我希望在完成第2步的内容后页面完成加载,而不必等待第1步完成。
感谢。
我想这可能是通过一个php脚本调用另一个PHP脚本,但不知道如何。
答案 0 :(得分:0)
看看fastcgi_finish_request。 使用此功能,您可以将页面内容返回给用户,但继续在服务器上执行脚本。
答案 1 :(得分:0)
我认为你没有接近正确的方式。可能在长时间运行和繁重的任务中,您应该使用工作队列来处理它们并在完成后将其发送回用户。 工作流程应如下所示:请求 - &gt;创建工作并将它们放入队列 - &gt;检查队列中项目的状态 - &gt;什么时候完成 - &gt;显示对用户的响应。 有很多解决方案可以实现这种架构。 请看一下:http://queues.io