2016-10-26 4 views
0

Я разрабатываю отчет о задаче с wrike, и мне хотелось бы узнать, возможно ли это сделать быстрее. Я не могу сдержать завиток, я не использую его. Вся помощь будет приветствовать :).Оптимизация запроса на завивание

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
    $headers = array(); 
    $headers[] = "Authorization: bearer ".$_COOKIE["wrike_token"]; 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

    foreach($folderArray as $currentFolder){ 

     curl_setopt($ch, CURLOPT_URL, "https://www.wrike.com/api/v3/folders/".$currentFolder->id."/tasks?completedDate={'start':'2016-10-11T00:01:00Z','end':'2016-10-11T23:59:00Z'}"); 
     $result = curl_exec($ch); 
     $result = json_decode($result); 

     if(!empty($result->data)){ 
      foreach($result->data as $currentTask){ 
       echo $currentFolder->title." : ".$currentTask->title."<br>"; 
      } 
     } 
     if (curl_errno($ch)) { 
      echo 'Error:' . curl_error($ch); 
     }     
    }  
    curl_close ($ch);` 
+0

Я думаю, что все должно быть внутри foreach – JYoThI

+0

нет, потому что я сделал это раньше, и это было хуже, раньше, со всеми в foreach скрипт был выполнен в 3 м. теперь 45 с. –

+0

Вы пытались использовать multi_curl? –

ответ

0

Вы можете использовать https://github.com/marcushat/RollingCurlX, который делает запрос параллельно Cu и скорости выборки намного лучше, чем делать последовательную выборку.

+0

Я просто пытаюсь с этим, но это не работает так хорошо, как думал, может быть, я сделал что-то не так, не могли бы вы дать мне пример? –

+0

Так я обычно использую это: – H123098

+0

$ RCX = new RollingCurlX (10); foreach ($ links as $ link) { $ link = trim ($ link); $ options = [CURLOPT_FAILONERROR => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true]; $ RCX-> addRequest ($ link, null, 'callback_functn', null, $ options, null); } $ RCX-> выполнить(); – H123098

0

Использование PHP request библиотека сделает вашу работу проще:

Пример:

$headers = array('Authorization' => 'bearer '.$_COOKIE["wrike_token"]); 
$options = array('completedDate'=>"{'start':'2016-10-11T00:01:00Z','end':'2016-10-11T23:59:00Z'}"); 
$url = 'https://www.wrike.com/api/v3/folders/'.$currentFolder->id.'/tasks'; 
$request = Requests::get($url, $headers, $options);