proxy начнут быстрее работать или что?)
У меня есть 1 файл где я делаю и прием и запрос на 3-й сервис, принял калл бэк - сразу делаю запрос, а что в этом плохого? Нужно сначала записать ответ кэлл бека и потом ставить очередь ?) так чтоли?) а где оно быстрее будет всеравно 1 воркер - 1 обработка. Или я что-то не понимаю? :(
Тут воркеры заканчиваются из-за того, что много curl запущено одновременно, и они все через proxy висят долго, а от того, что я создам очередь - не понимаю из-за чего лучше должно стать, конечно если очередь будет - не будет зависаний, но по факту обработать большее количество я не смогу, верно? Тогда зачем городить мне эту эпопею с очередью тратить время на изучение и изменения кода, если можно просто задать ограничение на отправку запросов, чтобы приходило меньше call backов и получится практически тоже самое, разве нет?) Тут наверное нужно думать, как одновременно выполнять 50-100 curl запросов одновременно, без очереди.
Александр Кубинцев, Хорошо, подведем итоги: Мне нужно использовать очередь запросов через RabbitMQ или Gearman и таким образом я буду избегать зависаний которые испытывает сервер сейчас при 20-30 одновременно вызванных call backах, поскольку будет использоваться очередь.
Сразу возникают вопросы: Получается, RabbitMQ просто ставит запросы в очередь в формате:
1
2
3
4
Когда сервер выполнил какую-то задачу - сразу ставится новая из очереди.
Получается, это просто ограничение принятия количества запросов для обработки, таким образом, возможно мне проще делать меньшее количество запросов к сайту, который присылает call backи, допустим могу сделать ограничение 10 запросов, как только они выполнились - статус изменился и можно загружать еще 10 итд - этот вариант намного проще)
Для меня кажется странным, что сервер виснет при 20-30 одновременно выполняемых curlах, разве нет?((
Александр Кубинцев, честно - я мало в этом понимаю, поэтому не могу сказать. Мне наверное просто нужен совет экспертов кто был в подобных ситуациях и знает что можно сделать чтобы работало без зависаний)
Александр Кубинцев, 120 секунд хватит ? Вы учли, то проксики через которые делаю запрос - дохленькие и бывает не рабочие, таймауты ставлю 20 секунд на коннект)
Я представляю эту картину так:
Получил call back, он становится в очередь, очередь освобождается тогда, когда есть свободное место, а место освободится тогда, когда завершатся старые запросы, а поскольку проксики дохленькие - старые запросы будут висеть ох как долго)
Александр Кубинцев скажите пожалуйста, как можно в данном случае поступить, если токен, который я получаю от сайта по решению капч действителен только 120 секунд? Если я настрою систему очередей - это никак не поможет насколько я понимаю в таком случае? Просто в теории, получается придет мне call back и я поставлю его в очередь, хотя мне наоборот нужно как можно скорее отправить запрос, чтобы не получить wrong reply
Александр Кубинцев, есть пачка заказов, например 100 штук. В файле start.php я создал ф-цию (multi curl) которая получает заказы из БД и эту пачку передает в Multi curl, который в свою очередь делает запросы к сайту и дает ему "заказы". Проходит некоторое время (2-3 минуты) и сайт начинает присылать выполненные заказы мне обратно, но присылает не пачкой, а по одному. 1 заказ = 1 post запрос к моему серверу, отсюда я не могу сделать multi curl и мне приходится создавать файл callback.php в котором есть ф-ция принятия Post запроса и я вынужден делать Обычный curl запрос к определенному url с результатами которые присылает нам сайт (решение капч).
Исходя из этого всего, когда одновременно обрабатываются много запросов 20-30 сервер просто зависает (точнее, через filezila я могу обращаться и все ок, но если я захочу зайти в phpmyadmin - то я не получу ответ, либо он будет грузить его 2-3 часа наверное)
Почему так происходит? обычный curl делается через proxy и конечно это медленно, но почему виснет сервер-то? я ж не даю ему тысячу одновременно? 20-30 я считаю немного. Может быть какие-то настройки я сделал не правильно? Буду рад любому совету.