Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / multi_curl выполняется меньше указанного количества раз / 2 сообщений из 2, страница 1 из 1
25.08.2014, 14:15
    #38728101
sharmanka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
multi_curl выполняется меньше указанного количества раз
Чуть допиленный пример с php.net почему-то отказывается работать, вместо ожидаемых 30 скачиваний страницы, получаю от 5 до 20. Пробовал выставлять таймауты соединений - безрезультатно.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
$cmh   = curl_multi_init();
$tasks = array();

for ($i = 0; $i < 30; $i++) {
    
    $ch = curl_init('http://ya.ru');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    
    $tasks[$i] = $ch;
    
    curl_multi_add_handle($cmh, $ch);
}

$active = null;
$result = array();
do {
    $mrc = curl_multi_exec($cmh, $active);
    var_dump($active);
    
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && ($mrc == CURLM_OK)) {
    if (curl_multi_select($cmh) == -1) {
        usleep(100); 
    }
    
    do {
        $mrc = curl_multi_exec($cmh, $active);
        
        $info = curl_multi_info_read($cmh);
        
        if ($info['msg'] == CURLMSG_DONE) {
            $ch                  = $info['handle'];
            $url                 = array_search($ch, $tasks);
            $result[intval($ch)] = curl_multi_getcontent($ch);
            
            echo ($result[intval($ch)]) . '<br/>';
            
            curl_multi_remove_handle($cmh, $ch);
            curl_close($ch);
        }
    } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    
}
curl_multi_close($cmh);


Пробовал вместо $mrc == CURLM_CALL_MULTI_PERFORM писать $active > 0 - тоже не помогло. Что я упускаю из виду?
...
Рейтинг: 0 / 0
29.08.2014, 18:57
    #38733099
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
multi_curl выполняется меньше указанного количества раз
sharmanka,

ну код написан логически не верно. без вникания в курл проблему
Код: php
1.
2.
3.
4.
5.
6.
while ($active && ($mrc == CURLM_OK)) {
do {
        $mrc = curl_multi_exec($cmh, $active);
     } while ($mrc == CURLM_CALL_MULTI_PERFORM); 
   
}



из внутреннего цикла мы выходим, когда мрц не равно -1(значение той константы)

а во внешнем пойдём по циклу, если мрс = 0(значение другой константы)

а теперь вопрос
если мрц не равно -1 , значит ли это что оно равно нулю???? конечно нет.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / multi_curl выполняется меньше указанного количества раз / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]