@TechNOIR

Как правильно сделать многопоточность?

Добрый день.

Подскажите пожалуйста как правильно использовать ныне многопоточность на чистом PHP?
Что лучше использовать?

Набрасываю скрипт для работы с API.
Он будет по сути небольшой, но так как много запросов получается то он линейно будет долго работать.
Будет 2 функции:
1. Получаю список идентификаторов пользователей по API
Потом для каждого из полученных пользователей будет проходить вторая функция
2. Получает по другому API инфу пользователей. По каждому.

Соответственно если линейно то он будет их друг за другом пользователей опрашивать.
Можно ли как-то в несколько потоков сделать чтобы ускорить выполнение скрипта? Чтобы паралельно штук по 10-20 опрашивалось

Спасибо заранее за информацию
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ответы на вопрос 3
@galliard
Для этой задачи вообще многопоточность не нужна, достаточно асинхронно делать сетевые запросы.

В этом тебе может помочь мультикурл
php.net/manual/ru/function.curl-multi-init.php

Так же другие http-клиенты имеют асинхроные решения, например guzzle
docs.guzzlephp.org/en/stable/faq.html#can-guzzle-s...

Да даже простым fopen/fread это сделать можно.

Суть там везде одна - отправляешь 100500 запросов и далее в цикле проверяешь, пришел ли ответ или нет (и полностью ли пришел или частично). Если пришел - обрабатываешь, если не пришел или пришел не полностью - уходишь на следующую итерацию.
Ответ написан
Комментировать
Captain
@Captain
Может Node JS? Насколько я понимаю любая многопоточность в php это эмуляция.
Она и в ноде не совсем настоящая, но все же лучше..
Ответ написан
netrox
@netrox
php.net/manual/en/intro.pthreads.php
Красным предупреждение
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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