我有一个php应用程序需要通过重复的SOAP调用来获取用户数据 - 最多700个。不幸的是,这种服务的报告目的似乎使得必须进行重复调用。无论如何,我有一个For循环(可以重复多达700次),它调用一个函数,而函数反过来进行SOAP调用。但是我在30秒后收到关于SOAP调用超时的错误。显然,在第一个SOAP调用返回到调用函数之后,我需要等待下一个SOAP调用。那怎么做呢。这是一段代码片段:
//calling function
foreach($xml_apicheck->children() as $child)
{
getprincipalinfoandemail($endusersconame);
}
//called function
function getprincipalinfoandemail($loginid) {
//making the SOAP calls and emailing//works for the first time called
return true;
}
答案 0 :(得分:1)
要在不花费很长时间的情况下完成大量SOAP请求,最好的办法是分叉PHP脚本并设置生成的进程数限制。每个fork将执行一个SOAP语句,等待它,然后在最后死掉。我写了一个脚本来做这几年,写了一篇关于它是如何工作以及如何实现它的教程/帖子。此特定示例是如何使用NuSOAP库使用索尼爱立信SMS网关(使用SOAP)。希望这会让你很快理顺:
http://jservedio.com/article/3
PS:这是几年前写的,所以我可能正在使用常规的MySQL库来连接数据库。如果必须连接到数据库,请确保使用PDO或mysqli - 特别是如果您从GET或POST获得任何查询输入。编辑:为了回应您的评论,您不需要所有这些功能 - 您可以考虑创建SOAP请求标头和正文,然后使用cURL将其发送到您需要的位置。这将等待响应(如果需要,甚至将其指向变量)。