Каталог статей - новости, обьявления, реклама
Главная | | Регистрация | Вход
Приветствую Вас Гость | RSS
Главная » 2009 » Октябрь » 1 » Как использовать curl_multi без блокировки
23:33
Как использовать curl_multi без блокировки
curl_multi это отличный способ обрабатывать несколько запросов HTTP в PHP. curl_multi особенно удобно при работе с большими наборами данных (например, доставка тысяч RSS каналов одновременно). К сожалению, существует очень мало документаций о наилучших способах осуществления curl_multi. В результате, большинство из приведённых примеров из интернета, либо неэффективны, либо не полностью работоспособны.

Проблема заключается в том, что большинство реализаций curl_multi, каждый указатель курла просит завершения до их переработки. Если слишком много запросов обрабатывать одновременно, они обычно разбиваются на группы, которые затем обрабатываются по одному. Проблема заключается в том, что каждая группа должна ждать, пока медленный запрос загрузится. В группе из 100 заявок, все медленные запросы способствуют замедлению 99 других.

Собственно вот сам пример этого творения:
        function sendRequest($urls) {
            $curly = array();
            $result = array();
            $mh = curl_multi_init();

            $iCount = 1;
            foreach ($urls as $url) {
                $curly[$iCount] = curl_init();
                
                curl_setopt($curly[$iCount], CURLOPT_URL, $url);
                curl_setopt($curly[$iCount], CURLOPT_HEADER, 0);
                curl_setopt($curly[$iCount], CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($curly[$iCount], CURLOPT_REFERER, $url);

                curl_multi_add_handle($mh, $curly[$iCount]);
                $iCount ++;
            }
            $running = null;
            do {
                curl_multi_exec($mh, $running);
            }
            while($running > 0);
            
            foreach($curly as $id=>$val) {
                $result[$id] = $val;
                curl_multi_remove_handle($mh, $val);
            }

            curl_multi_close($mh);
            return $result;
        }
Просмотров: 1220 | Добавил: $решаютвсё$ | Рейтинг: 0.0/0
Всего комментариев: 1
1 juknewrom80  
0
Коллекция вечерних, коктейльных платьев, платьев на выпускной бал. Фотографии. Адрес.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz