我有900项工作要做。每个工作都是从外部源获取数据并将其存储在数据库中。如果我运行200个或更少的作业运行平稳,但是如果运行200个以上的作业,则会显示以下错误消息:
“服务不可用 由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后再试。
此外,尝试使用ErrorDocument处理请求时遇到503服务不可用错误。”
为此,我正在使用PHP,mysql,并且来自外部源的响应为xml格式。
首次尝试: 我在数据库中有900个id,因此使用php收集到一个数组中,然后运行for循环,在每个循环中,我尝试通过提供id从外部源收集数据,但遇到上述错误。
第二次尝试: 我没有使用forloop,而是使用了while循环,但出现了相同的错误消息。
三次尝试: 我没有从数据库中获取每个ID,而是将所有900个ID收集到一个数组中,而是尝试从外部源收集信息,但仍然存在相同的错误。
(我的最终代码:)
$sql="select user_id from user_id_lists where user='temp'";
$result=mysqli_query($conn,$sql);
while($row=mysqli_fetch_assoc($result)){
//code to fetch data from external source by providing each user_id
//and then following response is collected.
$xml = simplexml_load_string(file_get_contents($request_url));
if($xml){
foreach($xml->Users->User as $resultt){
$title=$resultt->UserProfile->Name;
echo $title."<br/>";
}
}
到目前为止,我了解到由于长时间循环(900条记录),它正在显示上述错误消息。必须有一种方法可以运行这么长的循环。请指导我如何解决该问题。谢谢。
答案 0 :(得分:0)
使用mysqli_fetch_all()
并使用foreach
循环遍历结果,而不是一次获取一行。
类似这样
$sql="select user_id from user_id_lists where user='temp'";
$result=mysqli_query($conn,$sql);
$result= mysqli_fetch_all($result,MYSQLI_ASSOC);
foreach($result as $k => $v){
...
}