我又来了,对PHP的了解越来越多,但是对于我的场景还是有一些问题,我的大部分场景已经编程解决了没有问题,但是我发现了一个问题,但是要理解它,我需要解释一下第一的:
我有一个可以由任何客户端调用的 PHP 脚本,它的工作是接收请求,从我手动定义的列表中 ping 到代理,以了解代理是否可用,如果可用,我继续检索使用带有 POST 方法的“curl”的响应。逻辑是这样的:
$proxyList = array('192.168.3.41:8013'=> 0, '192.168.3.41:8023'=>0, '192.168.3.41:8033'=>0);
$errorCounter = 0;
foreach ($proxyList as $key => $value){
if(!isUrlAvailable($key){ //It means it is NOT available so I count errors
$errorCounter++;
} else { //It means it is AVAILABLE
$result = callThisProxy($key);
}
}
该函数"isUrlAvailable"
使用 $fsockopen 来了解代理是否可用。如果没有,我像前面提到的那样做一个,这个函数有POST
这样的东西:CURL
callThisProxy()
$ch = curl_init($proxyUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,'xmlQuery='.$rawXml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$info = curl_exec ($ch);
if($isDebug){echo 'Info in the moment: '.$info.'<br/>';}
curl_close ($ch);
但是,我们正在测试一些场景,如果我在验证代理可用性和调用之间关闭代理会发生什么?我是说:
foreach ($proxyList as $key => $value){
if(!isUrlAvailable($key){ //It means it is NOT available so I count errors
$errorCounter++;
} else { //It means it is AVAILABLE
$result = callThisProxy($key);//What happen if I kill the proxy when the result is being processed?
}
}
我对其进行了测试,当我这样做时, $result 以空字符串的形式出现''
。但问题是我丢失了那个请求,我的目标是用下$key
一个代理重试它。"do, while"
所以,当我调用结果时,我一直在考虑。但不确定,如果可以或者有更好的方法可以做到这一点,所以请我就这个问题寻求帮助。提前感谢您的时间,欢迎任何答案。谢谢。