PHP中的异步方法调用


Asynchronous Method Call In PHP

我有以下困境,我有一个SOAP API,需要优化一个方法:

public function myMethodForOptimisation(array $options) {
    //doing some stuff
    $this->requestsAnUltraSlowTimeConsumingMethod();
    return $someData;
}

我真的不需要等待$this->requestsAnUltraSlowTimeConsumingMethod()的最终确定,我只是异步地想对这个方法说做事情,并将return的结果告诉客户。

需要将其转换为

public function myMethodForOptimisation(array $options) {
    //doing some stuff
    async_method_call($this->requestsAnUltraSlowTimeConsumingMethod());
    return $someData;
}

PHP中是否存在async_method_call()

不能异步执行方法。但是,您可以将数据返回到客户端,关闭连接,并在断开连接后执行耗时的方法。

这个答案很详细。

异步执行php代码的另一个解决方案是用pclose(popen())派生一个新进程。

或者,对于真正高级的解决方案,您可以查看PHP的线程模块。

您可以使用线程:异步对PHP函数的PHP线程调用

这是唯一的方法。有几种方法可以使用它们,所以选择最适合你的。

我通常使用这个:http://php.net/manual/en/class.thread.php