[英]Call a script and continue running it in background in PHP?
我想编写一个脚本,该脚本调用一些代码,但是在调用它后仍可继续运行。 例如
function foo()
{
$this->load_function_a();
$this->load_function_b();
echo 'A and B succesfully called';
}
我希望函数的输出立即显示,而不是等待两个函数的处理完成。 任何想法如何在PHP中实现这一目标?
您正在寻找的是异步函数调用。 PHP支持多线程,尽管您需要在服务器上安装PThreads扩展。 我对PHP的多线程编程不是很熟悉(在这种情况下,.NET专家更多的是:P),但是此链接可能会为您提供很多帮助:
在Web环境中运行PHP通常很难做到这一点。 可能有多种“ hacky”方法来完成此操作,但是它们将不可靠,例如在析构函数中调用函数或使用register_shutdown_function()
实际上,简单的答案是:
function foo()
{
$this->load_function_a();
echo 'A succesfully called';
$this->load_function_b();
}
但是我假设这不能满足您实际代码中的需求。 因此,要正确解决此问题,真正的答案是使用某种队列和队列处理器。 例如:
希望这可以帮助!
如果您不希望以后再显示该函数的输出,则可以通过某种方式实现。
<?php
ignore_user_abort(true);
header("Content-Length: 0");
flush();
do_your_work_here();
除了使用Content-Length: 0
您还可以打印实际内容的长度并输出某些内容。 然后,浏览器将看到它读取了所有内容(至少他认为是这样),并且脚本将继续运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.