在PHP异步HTTP请求(Asynchronous HTTP requests in PHP)

2019-06-28 07:46发布

有没有使异步PHP中的HTTP请求,而不抛出响应任何理智的方法是什么? 即,类似于AJAX的东西 - PHP脚本发起请求,确实是自己的事情,后来,当接收到响应,一个回调函数/法或其他脚本处理响应。

一种方法穿过我的脑海 - 产生一个新的PHP程序与其他脚本为每个请求 - 第二脚本执行请求,等待响应,然后解析数据,但不管它应该,而原来的脚本继续产卵新工艺。 我怀疑,但是,关于此情况下的性能 - 必须有一些性能损失就不必每次都创建一个新的进程。

Answer 1:

是的,这取决于你的网站的流量,产卵一个单独的PHP进程中运行的脚本可能是灾难性的。 这将是更有效地使用了shell_exec()来启动一个后台进程,节省了输出到你已经知道文件名,但即使这可能是资源密集的。

你也可以拥有存储在数据库中的请求队列。 一个单一的,独立的后台进程将拉动工作,执行它,并保存输出,可能在你的Web程序可以检查数据库设置一个标志。

如果你要使用DB队列的方式,使用curl_multi *类的功能,一次发送所有排队的请求。 这将限制每次迭代的执行时间在你的后台进程最长请求时间。



Answer 2:

V5可以不带螺纹的,但你可以创建一个利用过程中的多任务应用。

看看下面的文章:“发展与PHP V5多任务应用”的IBM developerWorks上。 你可以在这里找到它http://www.ibm.com/developerworks/web/library/os-php-multitask/



文章来源: Asynchronous HTTP requests in PHP