Проблема с curl_multi

Статус
В этой теме нельзя размещать новые ответы.

Ikar1988

Новичок
Проблема с curl_multi

Добрый день.

Пишу парсер на PHP. Идет анализ большого числа сайтов, поэтому было принято решение об эмуляции многопоточности с использованием CURL. Код примерно следующий:

PHP:
        function multiget($urls, &$result, $post, $post_2 = NULL)
        {
            $threads = $this->threads;
            $useragent = $this->all_useragents[array_rand($this->all_useragents)];

            $i = 0;
            for($i=0;$i<count($urls);$i=$i+$threads)
            {
                $urls_pack[] = array_slice($urls, $i, $threads);
            }
            foreach($urls_pack as $pack)
            {
                $k = 0;
                $mh = curl_multi_init(); unset($conn);
                foreach ($pack as $i => $url)
                {
                    $conn[$k]=curl_init(trim($url));
                    curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1);  
                    curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER, 1);
                    curl_setopt($conn[$k], CURLOPT_HEADER, 1); 
                    curl_setopt($conn[$k],CURLOPT_TIMEOUT, $this->timeout);
                    curl_setopt($conn[$k], CURLOPT_CONNECTTIMEOUT, $this->timeout); 
                    curl_setopt($conn[$k],CURLOPT_USERAGENT, $useragent);
                    curl_setopt($conn[$k], CURLOPT_POST, 1);            
                    curl_setopt($conn[$k], CURLOPT_POSTFIELDS, $post);
                    curl_multi_add_handle ($mh,$conn[$k]);
                    $k++;
                    
                    if ($post_2) {
                        $conn[$k]=curl_init(trim($url));
                        curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1);
                        curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($conn[$k], CURLOPT_HEADER, 1);
                        curl_setopt($conn[$k],CURLOPT_TIMEOUT, $this->timeout);
                        curl_setopt($conn[$k], CURLOPT_CONNECTTIMEOUT, $this->timeout); 
                        curl_setopt($conn[$k],CURLOPT_USERAGENT, $useragent);
                        curl_setopt($conn[$k], CURLOPT_POST, 1);
                        curl_setopt($conn[$k], CURLOPT_POSTFIELDS, $post_2);
                        curl_multi_add_handle ($mh,$conn[$k]);      
                        $k++;                 
                    }
                    
                }
                
                do { $n=curl_multi_exec($mh,$active); usleep(100); } while ($active);
                for ($i = 0; $i < $k; $i++)
                {
                    $result[]=curl_multi_getcontent($conn[$i]);
                    curl_close($conn[$i]);    
                }
                curl_multi_close($mh);
            }
В качестве $urls передается массив URL. При этом система отказывается обращаться "сама к себе". Допустим, сайт visa.snowarts.ru при массиве:
PHP:
array('http://visa.snowarts.ru/get/s7', 'http://visa.snowarts.ru/get/uralairlines', 'http://visa.snowarts.ru/get/vimavia', 'http://visa.snowarts.ru/get/utair', 'http://visa.snowarts.ru/get/russia');
возвращает пустые значения на хостинге, а на локальной машине работает. В чем может быть проблема?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Воровать нехорошо.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху