我有以下困境,我有一个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