可以使用curl_multi记录每个进程的响应时间吗?这是我正在使用的代码我不知道如何记录每个进程的响应时间。谢谢你的帮助!
do
{
$execReturnValue = curl_multi_exec($mh, $runningHandles);
} while ($execReturnValue == CURLM_CALL_MULTI_PERFORM);
// Loop and continue processing the request
while ($runningHandles && $execReturnValue == CURLM_OK)
{
// Wait forever for network
$numberReady = curl_multi_select($mh);
if ($numberReady != -1)
{
// Pull in any new data, or at least handle timeouts
do
{
$execReturnValue = curl_multi_exec($mh, $runningHandles);
} while ($execReturnValue == CURLM_CALL_MULTI_PERFORM);
}
}
//End Run
//Get Data and Close
foreach($ping as $cid=>$p)
{
$curlError = curl_error($c[$cid]);
if($curlError == "")
{
$curl_data[$cid] = curl_multi_getcontent($c[$cid]);
}
else
{
//email me!
}
curl_multi_remove_handle($mh,$c[$cid]);
curl_close($c[$cid]);
}
curl_multi_close($mh);
答案 0 :(得分:1)
使用microtime()在你的forloop开始时获取时间,然后在末尾使用microtime()来获取代码结尾的时间,并从开头的时间减去结束的时间。得到不同。这是您的代码运行的时间。
编辑:
curl_setopt($ch, CURLOPT_WRITEFUNCTION, ‘read_body’);//sets callback
http://www.php.net/manual/en/function.curl-setopt.php
curl_multi并行启动进程。因此我以前的建议是行不通的。解决方案:添加回调!当所有这些进程开始时,并在回调记录中获取进程ID和它检入的时间的微时间。不幸的是,所有这些进程都将争夺对该回调的控制权。我认为解决方案是使用fork()来创建新进程。这只是为了获得进度条而进入相当多的工作,但如果你感兴趣,这里是php fork()的链接: http://php.net/manual/en/function.pcntl-fork.php