2010-10-05 55 views
2

我用下面的函数笨,让我的最新的tweet:PHP函数curl_exec()减慢我的剧本

function tweet($id) { 

     $c = curl_init(); 
     curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/".$id.".xml?count=1"); 

     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 

     //Benchmark starts here 
     $src = curl_exec($c); 
     //Benchmark ends here 

     curl_close($c); 

     preg_match('/<text>(.*)<\/text>/', $src, $t); 
     $data['tweet'] = htmlentities($t[1]); 
     preg_match('/<created_at>(.*)<\/created_at>/', $src, $c); 
     $created = $c[1]; 

     // explode $created so we can process it 
     $created_array = explode(' ',$created); 
     $time = $created_array[3]; 
     $time_array = explode(':',$time); 
     $format = '%b/%d/%Y %H:%M'; 
     $date_to_format = $created_array[1].'/'.$created_array[2].'/'.$created_array[5].' '.$time_array[0].':'.$time_array[1]; 
     $date_time = strptime($date_to_format,$format); 
     $created_timestamp = mktime($date_time['tm_hour'], $date_time['tm_min'], 0, $date_time['tm_mon']+1, $date_time['tm_mday'], $date_time['tm_year']+1900); 
     $time_diff = time() - $created_timestamp; 

     $data['time'] = time_since($time_diff); 

     return $data; 

    } 

我使用Benchmark类CI的看出为什么网站需要很长时间来响应,我发现该行

$src = curl_exec($c); 

需要超过5秒钟才能执行。谁能告诉我为什么会发生这种情况?

回答

1

我刚刚在我的机器上测试了您的代码(仅限于curl请求)并且没有任何问题...它快速检索数据:349ms。

难道你的网络有问题吗?或者,也许Tweeter在测试您的请求时有一段时间正确?上次我尝试使用Twitter API时,整个网站都停止了,所以也许他们也有问题。

祝你好运

+1

我几乎肯定它不是Twitter,因为它发生在过去的两天。谷歌搜索“curl_exec”我发现许多执行时间很慢,这个功能。另外它的本地运行速度很快(在我的MAC上),所以也许它与服务器有关。我能想到的唯一解决方法就是做一个cron作业并在本地存储推文。 – 2010-10-05 10:33:33