#php #multithreading #zeromq #curl-multi
#php #многопоточность #zeromq #curl-multi
Вопрос:
Я работаю над веб-приложением PHP (Zend Framework), которое для каждого запроса пользователя выполняет несколько вызовов внешних API (SOAP и / или REST через HTTP).
На данный момент вызовы API являются последовательными:
- Вызовите API A, подождите около 1 секунды для получения результатов
- Вызовите API B, подождите около 1 секунды для получения результатов
- Отправить страницу обратно пользователю
В этом случае нет никакой зависимости или связи между API A и B; Я просто хочу вернуть страницу со всей информацией как можно быстрее.
На данный момент я думаю о том,:
- curl_multi_exec() — http://php.net/manual/en/function.curl-multi-exec.php
- ZeroMQ — http://www.zeromq.org /
curl_multi_exec() свяжет мой клиентский код для API A и B более плотно, чем хотелось бы.
ZeroMQ кажется более сложным в реализации, и я не уверен, как я буду управлять рабочими процессами и сокетами.
Кто-нибудь успешно реализовал это поведение в приложении PHP / Apache без лишней суеты?
Ответ №1:
Похоже, вам нужен кеш. Они довольно просты в создании и могут быть либо файловой системой, либо любым расширением базы данных.
Комментарии:
1. Должен признать, я начинаю думать, что это будет проще, чем что-то вроде ZeroMQ. Что-то вроде (1) разветвления процесса (2) проверки наличия ответа (файловой системы или базы данных)? Насколько безопасно / надежно разветвление PHP?