我正在开发一个PHP Web应用程序,我需要在请求中执行一些网络操作,例如根据用户的请求从远程服务器获取某人.
是否有可能在PHP中模拟异步行为,因为我必须将一些数据传递给函数并且还需要从它输出.
我的代码是这样的:
<?php
$data1 = processGETandPOST();
$data2 = processGETandPOST();
$data3 = processGETandPOST();
$response1 = makeNetworkCall($data1);
$response2 = makeNetworkCall($data2);
$response3 = makeNetworkCall($data3);
processNetworkResponse($response1);
processNetworkResponse($response2);
processNetworkResponse($response3);
/*HTML and OTHER UI STUFF HERE*/
exit;
?>
Run Code Online (Sandbox Code Playgroud)
在发出3个请求时,每个网络操作大约需要5秒钟才能完成为应用程序的响应时间添加总计15秒.
makeNetworkCall()函数只是执行HTTP POST请求.
远程服务器是第三方API,所以我没有任何控制权.
PS:请不要回答关于AJAX或其他事情的建议.我目前正在寻找是否可以通过PHP实现这一点,可能是C++扩展或类似的东西.
我有一个函数需要从一个数组中查看大约20K行,并为每个行应用一个外部脚本.这是一个缓慢的过程,因为PHP在继续下一行之前等待脚本执行.
为了使这个过程更快,我正在考虑同时在不同的部分运行该功能.因此,例如,行0到2000作为一个函数,2001到4000在另一个函数上,依此类推.我怎样才能以一种干净的方式做到这一点?我可以创建不同的cron作业,每个函数一个用不同的参数:myFunction(0, 2000),然后另一个cron作业myFunction(2001, 4000),等等,但这似乎不太干净.这样做的好方法是什么?