我正在使用HttpRequest
和HttpRequestPool
发送并行的http请求,请求数量最多为200或者其他东西,有些接收器可能处于脱机状态,因此{ {1}}会一直等到响应或超时。
使用示例:
HttpRequestPool::send()
在我的php错误日志中我收到错误,有人可以告诉我我要做些什么来避免它们吗?我猜测这种情况的发生主要是因为对无效目的地的超时请求,因为所有有效的接收器都会得到消息并采取相应的行动。 有什么建议? Ty提前。
$query = "CALL GetBoardsURLS()";
$result = mysql_query($query) or die("ERROR:QUERY_FAILED 8" . mysql_error());
$pool = new HttpRequestPool();
//Add the data to the request pool.
while($row = mysql_fetch_row($result))
{
$req = new HttpRequest($row[0].'/', HTTP_METH_POST);
$req->setBody($message);
$pool->attach($req);
}
$pool->send();
答案 0 :(得分:0)
好的,这个问题已经存在了一段时间而没有回答。所以我会说我做了什么来摆脱错误。
$pool = new HttpRequestPool();
//Add the data to the request pool.
foreach($boardsURLS as $boardURL)
{
$req = new HttpRequest($boardURL.'/', HTTP_METH_POST);
$req->setBody($message);
$req->setOptions(array('connecttimeout' => 3, 'timeout' => 3));
$pool->attach($req);
}
$ErrorLog = fopen('Logs/GameEnd.txt', "a+");
try
{
$pool->send();
}
catch(HttpException $ex)
{
fprintf($ErrorLog, '%s', $ex);
}
fclose($ErrorLog);
“错误”是例外,因为我没有处理它们,所以它们被添加到php53_errors.log
中。现在通过添加try和catch,可以处理异常以便解决它。现在我将异常(超时异常)存储在一个单独的文件中(这是因为我想)其他人当然可以以不同的方式处理它们。所以我无能为力。
下一步强>
$req->setOptions(array('connecttimeout' => 3, 'timeout' => 3));
这是我喜欢的部分。由于我并不真正关心响应,我只是希望我的http请求能够传输到接收器。我把超时时间设为3秒。这可以防止我的脚本继续运行并等待响应。
希望这会对某人有所帮助。干杯