Fqyeh29
@Fqyeh29
↓ ИМХО ↓

Как отправить get запрос, без ожидания ответа (php)?

Скрипт обрабатывает очень большой объем данных, при среднем объеме он это делает ~260 сек, но у хостинга "Макхост", есть ограничение на выполнение скриптов не более 5 мин(300 сек), а объем данных, обрабатываемым скриптом может увеличится. Возникла идея асинхронности, но это не js, такого тут кажется нет.. Поэту решил запустить 3 скрипта, которые запускаются одновременно и каждый обрабатывает 1/3 данных. Тогда нужен 1 скрипт которых запустит 3 скрипта одновременно, не дожидаясь ответа. Так как отправить get запрос, и не ждать ответа?

Или есть другие способы обработать большое кол-во данных? (node.js это вариант, но js я знаю плохо, и переписывать на js скрипты не хочется)
  • Вопрос задан
  • 3842 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Если у вас узкое место именно получение данных - можно вооружиться multicurl, и тогда мы можем паралельно делать несколько запросов. Обрабатывать результаты запросов всеравно придется последовательно, так что профит будет только в случае, если get запросы отнимают большую часть времени работы скрипта.

очереди задач. Скрипт добавляет на обработку задачи в очередь (так как у вас sharer хостинг, думаю штуки типа rabbitmq отпадают, остаются только очереди в базе данных или в reddis, смотря что у вас есть), несколько скриптов обработчиков забирают задачи из очереди и собственно работают. Правда если у вас нельзя выполнять и cli скрипты c set_timeout(0), то тогда этот способ не будет нормально работать.

ну и уж тем более раз уж речь о shared хостинге, взять что-то типа pthreads или pcntl так же не выйдет. Если выйдет - можно по настоящему распаралелить приложение и получить ощутимый профит.

JS так же делает это все дело не совсем асинхронно, просто в промежутке между отправкой и получением запроса вы можете что-то делать, но делаться все будет всеравно последовательно, никакого паралелизма из коробки, но там нету и ограничений по времени. Да и не думаю что если у вас есть возможность установить node.js то будет какая-то проблема и на php реализовать.
Ответ написан
Комментировать
dllweb
@dllweb
exec('php ну а дальше сам запускай что хочешь и параметры передавай');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы