2013-09-21 6 views
3

У меня есть страницы в Facebook, которые мне нужны, чтобы извлекать данные сумм каждый день (например, post, shar ...), но я запускаю свой сценарий, hi получил данные для 2 или 3 страницы Facebook max и hi остановился с сумма ошибокГрафик API Тайм-аут Facebook

мой сценарий

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 Facebook не всегда так быстро. Так,

  • либо изменить set_time_limit задержку от 60 секунд до более в файле php.ini,
  • или кусочек вашего запроса на более мелкие части.

Более широкий запрос не всегда лучше. Меньшие запросы позволят вам получить первые результаты как можно скорее и позволят вам обработать их раньше или уведомить пользователей о ходе (мышление в AJAX).

Смежные вопросы