powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / multi_curl выполняется меньше указанного количества раз
2 сообщений из 2, страница 1 из 1
multi_curl выполняется меньше указанного количества раз
    #38728101
sharmanka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чуть допиленный пример с 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
multi_curl выполняется меньше указанного количества раз
    #38733099
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / multi_curl выполняется меньше указанного количества раз
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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