【发布时间】:2013-01-06 03:00:24
【问题描述】:
我不知道怎么做。
有一个 XML Api 服务器,我正在使用 cURL 获取内容;它工作正常。现在我必须调用creditCardPreprocessors 状态。它也有“进行中状态”,PHP 应该等到进程完成。我已经尝试过睡眠和其他方式,但我做不到。这是我尝试过的简化示例变体:
function process_state($xml){
if($result = request($xml)){
// It'll return NULL on bad state for example
return $result;
}
sleep(3);
process_state($xml);
}
我知道,这可能是一个无限循环,但我尝试添加计数以在达到 5 时退出;它不会退出,服务器将挂起,我将在几分钟内出现 500 个错误,并且该虚拟主机无法访问 Apache。
编辑:
另一个例子
$i = 0;
$card_state = false;
// We're gona assume now the request() turns back NULL if card state is processing TRUE if it's done
while(!$card_state && $i < 10){
$i++;
if($result = request('XML STUFF')){
$card_state = $result;
break;
}
sleep(2);
}
【问题讨论】:
-
PHP
break对您有什么帮助吗? -
我认为你可能因为递归而内存不足
-
不,尝试过,没有停止,也尝试过退出,根本没有退出。在以请求为条件的睡眠 while 循环中尝试,我不允许它运行 10 次,根本没有退出......
-
@vortextangent 我在这台服务器上有 512mb 的内存限制,不,不要,此时它只发出 10 个请求......即使对于 curl 来说也没有那么多......跨度>
-
你能发一些
request()吗?