我有一个PHP脚本需要处理一些较长时间的任务。但是我不想让浏览者等待脚本完成,而是希望他可以继续浏览和/或关闭浏览器。然而,我希望这个脚本能够继续工作...如何实现呢?是否有一种方法可以创建某种类型的线程来实现这样的功能?
附言:我真的不想用另一种语言重写脚本并通过操作系统执行它。
附言:我真的不想用另一种语言重写脚本并通过操作系统执行它。
exec('php your_script.php > /dev/null &');
这将允许页面完成加载,但保持your_script.php的运行。
class AsyncSoapClient extends SoapClient {
function __construct($wsdl, $options) {
parent::__construct($wsdl, $options);
}
function __doRequest($request, $location, $action, $version, $oneWay = TRUE) {
return parent::__doRequest($request, $location, $action, $version, TRUE);
}
}
$client = new AsyncSoapClient(
NULL,
array(
'location' => $location,
'uri' => $uri
)
);
$client->invokeMethodOnServer($yourParameters);
如果可以的话,您可以做另一件事情,即维护一个表格来记录脚本执行的状态, 然后编写一个JavaScript代码,进行ajax调用以检查记录的状态,如果为真,则检索数据,然后向用户显示它。
exec
会在操作系统中运行一个命令。因此,您必须以这种方式传递参数,这里没有涉及HTTP(GET、POST等是HTTP方法)。PHP:命令行用法 - kapa