我想编写一个调用某些代码但在调用后继续运行的脚本。 E.g
function foo()
{
$this->load_function_a();
$this->load_function_b();
echo 'A and B succesfully called';
}
我希望函数输出能够立即显示,而不是等待两个函数的处理完成。知道如何在PHP中实现这一点吗?
答案 0 :(得分:0)
您正在寻找的是异步函数调用。 PHP支持多线程,但您需要在服务器上安装PThreads扩展。我不是很熟悉PHP中的多线程编程(在这些情况下更像是.NET的人:P),但这个链接可能对你有所帮助:
答案 1 :(得分:0)
在Web环境中运行PHP时,这通常不容易实现。可能有各种各样的" hacky"实现此目的的方法,但它们将是不可靠的,例如在析构函数中调用函数,或使用register_shutdown_function()
实际上,简单的答案是:
function foo()
{
$this->load_function_a();
echo 'A succesfully called';
$this->load_function_b();
}
但是,我认为这不会满足您在实际代码中的需求。所以要正确解决这个问题,真正的答案是使用某种队列和队列处理器。例如:
希望这有帮助!
答案 2 :(得分:0)
如果你不想在以后显示函数的输出,这在某种程度上是可能的。
<?php
ignore_user_abort(true);
header("Content-Length: 0");
flush();
do_your_work_here();
您可以打印实际内容长度并输出内容,而不是使用Content-Length: 0
。然后,浏览器会看到它读取所有内容(至少他认为是这样),并且您的脚本将继续运行。