Сергей Семенко: Всё сделал. Но проблема все же возникла. И какая! Оказалось, что Laravel не может распараллелить выполнение очередей. То есть каждый artisan queue:work выполняет очередь и переходит к следующей. Получается, что если у меня 100 пользователей одновременно что-то запросили, то 100ый должен ждать, пока выполнятся все очереди до 99ого. При этом большое количество воркеров не поможет: если я даже запущу 100 воркеров, а запросов будет 10.000, возникнет картина только хуже.
Можно ли как-то распараллелить выполнение очередей, вы не в курсе?
Сергей Семенко: Понял. Спасибо большое за ответы. Во всяком случае инициализация обычным GET-запросом и постановка в очередь мне в голову не пришла. Поковыряю в этом направлении. Пожалуйста, не умирайте там, думаю, через неделю у меня могу возникнуть вопросы :) Еще раз спасибо.
Сергей Семенко: Прошу прощения, если я откровенно туплю. Буду благодарен, если вы не махнете рукой, а объясните. Первый раз столкнулся сегодня днем, не прошло 10 часов. Поэтому вопросы могут быть самыми дебильными.
Туплю. Я, кажется, понял вашу идею. То есть браузер отправляет прямой GET-запрос (например) в ларавел. Ларавел инициализирует поиск и шлет броадкасты обратно, но уже через node.js+socket.io.
Звучит здраво. А не подскажете, как тогда понять - кому именно отсылать запросы обратно? На момент GET-запроса сокет еще не инициализирован же.
Собственно, результаты поиска и так уже пишутся в БД и подчас из нее и берутся, но не всегда.
Я не смог только найти информацию о том, как конкретно (какой код?) мне через связку node+redis+lara+socket.io кинуть броадкаст так, чтобы его получил конкретный мне пользователь.
Мне кажется, что я что-то концептуально не понимаю. Например: ведь в момент посылки из браузера сообщение в node.js никакой экземпляр laravel вообще не существует, не запущен. Кто будет обрабатывать этот запрос, как инициализировать php-процесс?..
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Ну как обычно. Вроде работает.