Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема с multi_curl
Форумы портала PHP.SU » » Работа с сетью » Проблема с multi_curl

Страниц (1): [1]
 

1. godmod - 26 Августа, 2014 - 08:55:22 - перейти к сообщению
Чуть допиленный пример с php.net почему-то отказывается работать, вместо ожидаемых 30 скачиваний страницы, получаю от 5 до 20. Пробовал выставлять таймауты соединений - безрезультатно.
PHP:
скопировать код в буфер обмена
  1. $cmh   = curl_multi_init();
  2. $tasks = array();
  3.  
  4. for ($i = 0; $i < 30; $i++) {
  5.    
  6.     $ch = curl_init('http://ya.ru');
  7.     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  8.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  9.     curl_setopt($ch, CURLOPT_HEADER, 1);
  10.    
  11.     $tasks[$i] = $ch;
  12.    
  13.     curl_multi_add_handle($cmh, $ch);
  14. }
  15.  
  16. $active = null;
  17. $result = array();
  18. do {
  19.     $mrc = curl_multi_exec($cmh, $active);
  20.     var_dump($active);
  21.    
  22. } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  23.  
  24. while ($active && ($mrc == CURLM_OK)) {
  25.     if (curl_multi_select($cmh) == -1) {
  26.         usleep(100);
  27.     }
  28.    
  29.     do {
  30.         $mrc = curl_multi_exec($cmh, $active);
  31.        
  32.         $info = curl_multi_info_read($cmh);
  33.        
  34.         if ($info['msg'] == CURLMSG_DONE) {
  35.             $ch                  = $info['handle'];
  36.             $url                 = array_search($ch, $tasks);
  37.             $result[intval($ch)] = curl_multi_getcontent($ch);
  38.            
  39.             echo ($result[intval($ch)]) . '<br/>';
  40.            
  41.             curl_multi_remove_handle($cmh, $ch);
  42.             curl_close($ch);
  43.         }
  44.     } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  45.    
  46. }

Пробовал вместо $mrc == CURLM_CALL_MULTI_PERFORM писать $active > 0 - тоже не помогло. Что я упускаю из виду?

 

Powered by ExBB FM 1.0 RC1