2013-09-21 2 views
3

매일 (예 : 게시물, 샤 ... 같은) 합계 데이터를 추출해야하는 페이스 북 페이지가 있지만, 스크립트를 실행합니다. 안녕하세요 2 ~ 3 페이지 페이스 북 최대 및 안녕을위한 데이터가 있습니다. 합 오류그래프 API 페이스 북 타임 아웃

내 스크립트

include '../webroot/fb/facebook.php'; 
     //Get Facebook SDK Object 
     $config = array(
       'appId' => 'codeapl', 
       'secret' => 'secret', 
       'cookie' => true); 
     $facebook = new Facebook($config); 
     $this->Pag->recursive = -1; 
     $pages=$this->Pag->find('all'); 
     foreach ($pages as $page) 
     { 
      //Info page 
      $this->Pag->id=$page['Pag']['id']; 
      $params = array('method' => 'fql.query', 
       'query' => "SELECT pic FROM page WHERE page_id='".$page['Pag']['idpage']."'",); 
      $result = $facebook->api($params); 
      $this->request->data['Pag']['image']= $result[0]['pic']; 
      $this->Pag->save($this->request->data); 

      //Statistique 
      $page_id=$page['Pag']['id']; 
      $idpage=$page['Pag']['idpage']; 
      $params = array('method' => 'fql.query', 
       'query' => "SELECT fan_count,talking_about_count,pic FROM page WHERE page_id='$idpage'",); 

      $result = $facebook->api($params); 
      $this->loadModel('Statistique'); 
      $this->Statistique->create(); 
      $this->request->data['Statistique']['likes']= $result[0]['fan_count']; 
      $this->request->data['Statistique']['talk']= $result[0]['talking_about_count']; 
      $this->request->data['Statistique']['pag_id']= $page_id; 

      $params = array('method' => 'fql.query', 
       'query' => "select message,share_count,comments,likes from stream where source_id='$idpage' and is_published=1 limit 1000"); 
      $result = $facebook->api($params); 
      $message=0; 
      $comment=0; 
      $shar=0; 
      $like=0; 
      foreach ($result as $value) 
      { 
       $message++; 
       $shar=$shar+$value['share_count']; 
       if(isset ($value['likes']['count'])) 
        $like=$like+$value['likes']['count']; 
       $comment=$comment+$value['comments']['count']; 
      } 

      $this->request->data['Statistique']['posts']=$message; 
      $this->request->data['Statistique']['likepost']=$like; 
      $this->request->data['Statistique']['comments']=$comment; 
      $this->request->data['Statistique']['char']=$shar; 
      $this->Statistique->save($this->request->data); 


      //pays 
      $params = array('method' => 'fql.query', 
       'query' => "SELECT value FROM insights WHERE 
        object_id='$idpage' AND metric='page_fans_country' 
        AND end_time=end_time_date('2013-04-14T07:00:00+0000') AND period=period('lifetime')",); 
      $result = $facebook->api($params); 
      $this->loadModel('Payspage'); 
      foreach ($result[0]['value'] as $key => $value) 
      { 
       $pays_id=$this->requestAction("/pays/setpays/$key"); 
       $this->Payspage->create(); 
       $data['Payspage']['pay_id']=$pays_id; 
       $data['Payspage']['pag_id']=$page_id; 
       $data['Payspage']['nombre']=$value; 
       $this->Payspage->save($data); 
      } 
     } 

오류가

Error: Maximum execution time of 60 seconds exceeded  
File: C:\wamp\www\pub\app\webroot\fb\base_facebook.php 
Line: 971 

답변

3

이 코드 set_time_limit(1000000);을 함수 php에서 사용할 수 있습니다

3

조회에 큰 외모와 페이스 북의 API가 그렇게 빨리 항상 아닙니다. 그래서,

  • 중 하나는, php.ini 파일에 이상
  • 60 초 당신의 set_time_limit 지연을 변경하거나 작은 부분에 검색어를 썬다.

더 큰 쿼리가 항상 좋은 것은 아닙니다. 쿼리가 작을수록 가능한 한 빨리 첫 번째 결과를 얻을 수 있으며 이전에이를 처리하거나 진행 상황을 사용자에게 알릴 수 있습니다 (AJAX에 대한 생각).