Size: a a a

2020 April 05

J

Jensen in Laravel Pro
sheykvit
Почему в ноду не прокинешь?
То есть ловить запрос в Laravel (Middleware проверит csrf), а дальше отправить его в nodejs?
Просто выполнить PHP::exec()? Или есть нормальный механизм?
источник

s

sheykvit in Laravel Pro
Jensen
То есть ловить запрос в Laravel (Middleware проверит csrf), а дальше отправить его в nodejs?
Просто выполнить PHP::exec()? Или есть нормальный механизм?
Само api сделать на ноде, где через воркер тредс запустить несколько потоков на получение данных
источник

J

Jensen in Laravel Pro
sheykvit
Само api сделать на ноде, где через воркер тредс запустить несколько потоков на получение данных
Я написал это как третий вариант. Но тогда теряем CSRF-токен
источник

s

sheykvit in Laravel Pro
Jensen
Я написал это как третий вариант. Но тогда теряем CSRF-токен
на ноде также миддлварами проверяется csrf
источник

IG

Ilya Goryachev in Laravel Pro
sheykvit
Само api сделать на ноде, где через воркер тредс запустить несколько потоков на получение данных
А это не попытка изобрести json rpc?
источник

J

Jensen in Laravel Pro
sheykvit
на ноде также миддлварами проверяется csrf
Нашел! Спасибо
источник

M

Michael in Laravel Pro
Jensen
Всем привет. Вопрос по архитектуре.

У меня поступает запрос от браузера пользователя в Laravel-приложение. По этому запросу нужно загрузить из другого источника данные и отдать пользователю.
Запрос поступает скажем в метод AnyController::loadData()

Раньше источник данных был один.
В этом случае я прямо в коде AnyController::loadData() я делал запрос через PHP библиотеку Guzzle к стороннему api, обрабатывал запрос, ошибки и возвращал назад пользователю.


Сейчас источников данных три. Они отвечают с разной скоростью и разной полнотой ответа. При этом есть задача максимально быстро показать пользователю результат, а потом уже догружать данные.

Есть три варианта, но все они работают по одному принципу:

В AnyController::loadData() я создаю идентификатор ответа IDRESPONCE и сразу его возвращаю пользователю в браузер. И тут же параллельно запускаются три задачи на дозагрузку данных. Каждая из этих задач кладет ответ в БД и указывает IDRESPONCE.
А в браузере я поллингом ломлюсь каждую секунду к другому методу AnyController::getNewData(передаю ему IDRESPONCE) и жду появления записей.



Вопрос: как организовать параллельную загрузку данных?

1. PHP PThreads. в методе AnyController::loadData() стартануть три потока и они пусть молотят данные дальше. Но множить потоки на каждый запрос, это стрёмно, откровенно.

2. Queue. в методе AnyController::loadData() кладу в очередь три задачи на загрузку, а дальше их воркеры берут из очереди и обрабатывают. Тут всё отлично, кроме того, что нужна работоспособная очередь и я не знаю насколько это будет быстро.

3. Node.js Реализовать метод AnyController::loadData() не на Laravel а в Node.js. Но тут проблема с CSRF-токеном, не хотелось бы терять его, а в ноду его не прокинешь.
Мультикурл ?
источник

J

Jensen in Laravel Pro
Michael
Мультикурл ?
Мне нужно чтобы как только первый ответил, отдать ответ пользователю, то есть сделать return.
После этого (как я понимаю) остальные запросы умрут. В случае Guzzle как только вернули данные, остальные promise прекращают работать
источник

s

sheykvit in Laravel Pro
Jensen
Мне нужно чтобы как только первый ответил, отдать ответ пользователю, то есть сделать return.
После этого (как я понимаю) остальные запросы умрут. В случае Guzzle как только вернули данные, остальные promise прекращают работать
Но тебе же нужны и остальные данные, как я понял
источник

M

Michael in Laravel Pro
Jensen
Мне нужно чтобы как только первый ответил, отдать ответ пользователю, то есть сделать return.
После этого (как я понимаю) остальные запросы умрут. В случае Guzzle как только вернули данные, остальные promise прекращают работать
Если надо собирать данные с нескольких источников и показывать пользователю по мере появления данных, то тут алгоритм мне видится таким:
- аяксом посылаем запрос на получение данных
- сервер заводит в БД/редисе/итп место для сбора данных, стартует скрипт сбора данных (например, в очередь кладётся таска с мультикурлом. или несколько таск, каждая со свом урлом) и возвращает токен. скрипт заполняет БД данными и в конце кладёт метку, что всё скачалось
- фронт или открывает вебсокет-соединение или периодически пингует аяксом сервер на получение данных по токену и показывает их пользователю.
источник

J

Jensen in Laravel Pro
Michael
Если надо собирать данные с нескольких источников и показывать пользователю по мере появления данных, то тут алгоритм мне видится таким:
- аяксом посылаем запрос на получение данных
- сервер заводит в БД/редисе/итп место для сбора данных, стартует скрипт сбора данных (например, в очередь кладётся таска с мультикурлом. или несколько таск, каждая со свом урлом) и возвращает токен. скрипт заполняет БД данными и в конце кладёт метку, что всё скачалось
- фронт или открывает вебсокет-соединение или периодически пингует аяксом сервер на получение данных по токену и показывает их пользователю.
Собственно говоря это и получилось. Всем спасибо)
источник

TC

Taras Chernata in Laravel Pro
Здравствуйте ребята!
Возникла ошибка с установкой Redis сервера, если точнее все было хорошо но потом он перестал работать, я его удалил и попробовал переустановить но на 88% установка останавливается а потом спустя время выдает ошибку(типа не можно было запустить сервер). Когда проверяю статус, выдает - "Activating(Start)". Ошибку смотри на скрине.
Я не пойму почему она происходит, переставлял редис удаляя все конфиги и останавливая Файрволы, Nginx и другие сервисы, но не получается решить проблему.
Подскажите пожалуйста что это может быть?
источник

JE

John Emelyanov in Laravel Pro
Здравствуйте , господа программисты
Может кто нибудь посоветовать курсы по Laravel ? Чтобы хотя бы до уровня Junior
Молодой парень никак не может разобраться с такой огромной структурой . Прошу не судить строго . Спасибо)
источник

ЕЕ

Евгений Евгений... in Laravel Pro
John Emelyanov
Здравствуйте , господа программисты
Может кто нибудь посоветовать курсы по Laravel ? Чтобы хотя бы до уровня Junior
Молодой парень никак не может разобраться с такой огромной структурой . Прошу не судить строго . Спасибо)
документация лучше)
источник

JE

John Emelyanov in Laravel Pro
Правда?)
источник

ЕЕ

Евгений Евгений... in Laravel Pro
John Emelyanov
Правда?)
ну чем хороши курсы?
источник

JE

John Emelyanov in Laravel Pro
Я не знаю ) Хотел услышать мнение профессионалов . Я еще зелёный в этом всём . Документация казалась мне всегда чем то сверх..) Но теперь я попробую её почитать
источник

D

Dobrik in Laravel Pro
читай доку, что не понятно ищи видосы
источник

ЕЕ

Евгений Евгений... in Laravel Pro
John Emelyanov
Я не знаю ) Хотел услышать мнение профессионалов . Я еще зелёный в этом всём . Документация казалась мне всегда чем то сверх..) Но теперь я попробую её почитать
главное пхп знай хорошо)
источник

D

Dobrik in Laravel Pro
вобще я не помню когда в последний раз смотрел видосы, по сорцам бегаю, на крайняк гугл пока меня не забанил
источник