Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122

Multi curl с несколькими шагами

31.10.2018, 16:14. Показов 1728. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
К примеру у меня есть простой запрос
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ch=curl_init(); 
curl_setopt($ch,CURLOPT_URL,$url_1);
curl_setopt($ch,CURLOPT_COOKIEJAR,'/cookies/1.txt');
curl_setopt($ch,CURLOPT_COOKIEFILE,'/cookies/1.txt');
curl_setopt($ch,CURLOPT_COOKIE,'cookiename=cookie-1');
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_HEADER,TRUE);
curl_setopt($ch,CURLOPT_TIMEOUT,30);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,'test=test');
curl_exec($ch);
curl_setopt($ch,CURLOPT_URL,$url_2);
curl_setopt($ch,CURLOPT_POST,FALSE);
$content=curl_exec($ch);
curl_close($ch);
echo $content;
То есть сначала мне нужно отправить пост и записать его в куки а потом уже делать основной запрос, это работает без проблем.
Вопрос в том как данный запрос сделать многопоточным, используя curl_multi_init()?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.10.2018, 16:14
Ответы с готовыми решениями:

Multi curl
Добрый вечер, некоторыми постами ниже, с горем пополам разобрался с циклами. Но теперь стала задача, как ускорить процесс работы скрипта,...

multi-hash -массив с несколькими индексами
Возможно ли? Для примера, hash_mas == hash_mas == hash_mas А для разнотипных ключей (индексов)? hash_mas == has_mas == has_mas ...

Как разделить результат, возвращаемый Multi curl?
1)Я вообще непонимаю зачем нужна функция static int writer(char *data, size_t size, size_t nmemb, string *buffer) как по мне...

4
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
31.10.2018, 18:45
Именно эти два запроса выполнить асинхронно? Это нелогично, ведь вы сами сказали, что второй зависит от первого:
Цитата Сообщение от Nebiros Посмотреть сообщение
мне нужно отправить пост и записать его в куки а потом уже делать основной запрос
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
31.10.2018, 19:01  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Именно эти два запроса выполнить асинхронно? Это нелогично, ведь вы сами сказали, что второй зависит от первого:
Наверно вы неправильно поняли, скажем так - вот этот запрос, указанный выше, мне нужно выполнить 10 раз, я его хочу выполнить с помощью мульти, это возможно и если да то как?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
31.10.2018, 19:22
То, что с 1 по 15 строках, выполнять для каждого из 10 запросов должно или 1 раз можно выполнить, а потом 10 других запустить?

Если для каждого, то вряд ли получится. Так как очевидно, что в стек тот предварительный запрос помещать нельзя.
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
31.10.2018, 19:28  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
То, что с 1 по 15 строках, выполнять для каждого из 10 запросов должно или 1 раз можно выполнить, а потом 10 других запустить?
Если для каждого, то вряд ли получится. Так как очевидно, что в стек тот предварительный запрос помещать нельзя.
в принципе думаю можно первый шаг 1 раз выполнять, в этом шаге установка языка происходит, а так как все дальнейшие запросы по одному языку идет то да - 1 шаг раз и в куки и далее все запросы мульти... только как?

Добавлено через 2 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$multi=curl_multi_init();
$channels=array();
$contents=array();
foreach($arr_url as $url=>$post){
$ch=curl_init(); 
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_TIMEOUT,10);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10); 
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($ch,CURLOPT_HEADER,TRUE);
curl_multi_add_handle($multi,$ch);
$channels[$url]=$ch;
}
 
$active=NULL; do{ curl_multi_exec($multi,$active); } while($active>0);
foreach($channels as $url=>$channel) {
$contents[$url]=curl_multi_getcontent($channel);
curl_multi_remove_handle($multi, $channel);
}
curl_multi_close($multi);
вот к этому как прикрутить 1 шаг?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2018, 19:28
Помогаю со студенческими работами здесь

Как работать с рекурсивными шагами?
Например, у меня работает функция, и всё в ней меня устраивает, но вот мне потребовалось сохранить эту функцию и вызвать новую. В...

Как развиваться в 1С большими шагами?
Хочу быть экспертом в 1С:УПП. Программирую на 1С:8.х уже 2 года. Сейчас у себя на работе внедряю 1С:КА. Как продвигаться большими шагами в...

Как сделать паузу между шагами загрузки ProgressBar?
Приложение для windows 8. Как сделать плавную загрузку? for (int i = 0; i <= PBar.Maximum; i++) { ...

Поиск суммы эллементов матрицы шагами вправо и вниз
Допустим есть матрица 4х4 9 2 6 2 1 3 9 1 10 11 13 15 5 6 1 10 Максимальная ее сумма, если можно передвигаться по массиву...

Изобразить 3 графика решений с различными шагами (Mathcad Prime 3.0)
Мне нужно изобразить 3 графика решений с различными шагами. Подскажите, пожалуйста, как это сделать в одном блоке решений или же необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru