Как сделать файлы доступными (public) из бакита я знаю (для этого я использую policy). Но вопрос был в том, почему не работает метод setVisibility($fileName, 'public') - файл публичным не становится если только его вручную не открыть через policy.
JhaoDa, ясно, что-то буду думать над механизмом. Правильно ли я понимаю алгоритм Bus::batch. Я передаю в Bus::batch([...]) массив со списком jobs пользователя и все это улетает в очередь. Если с какой-то джобой из этого массива пошло что-то не так, то в ->catch(function (Batch $batch, Throwable $e) это можно поймать и обработать?
Я однажды пользовался сервисом для анализа текста. Создал задание и нажал на кнопку анализировать. В результате на экране появилось сообщение, что я стою 10 в очереди на анализ текста. Вот я пытаюсь понять как такое организовать при этом пользователь должен стоять в очереди со своими заданиями.
Просто если у пользователя много заданий то он буде долго ждать пока они выполнятся. А если в этот момент в очередь еще влезут другие пользователи со своими заданиями, то время ожидания до конца выполнения всех заданий может растянуться.
Антон Неверов, Спасибо. Я знаком с этим ресурсом и некоторыми известными паттернами, но еще не научился мыслить через призму паттернов в контексте решения задач.
Сергей delphinpro, а если запустить все парсеры? Например, добавляем объекты всех парсеров в массив и проходим по массиву этих объектов форичем и на каждой итерации отправляем $parser->parse(); в очередь где задача будет запущена в фоновом режиме. Такой подход будет корректным?
Дмитрий, в контроллере просто принимается параметром $user или данные из $request, которые передаются в два сервиса, которые получат из внешних api данные и вернут в контроллер. Но это можно сделать и в контроллере, но нужно несколько блоков try catch на случай ошибки. Я и хотел спросить у опытных разработчиков, правильно ли будет вынести эту логику в сервисы и там получить данные и обработать try catch. Чтобы не засорять контроллер.
Дмитрий, можно, просто это будет класс у которого будет много задач, а я хотел бы их разделить, чтобы не дублировать часть кода в других местах приложения.
Дмитрий, ну один класс отвечает за одну задачу. Например, один сервис просто получает и возвращает данные из внешнего Api, например, список тарифов. Второй сервис получает и возвращает список купонов на скидку. Третий сервис делает подписку на основе данных полученных из первых двух сервисов. В контроллере мы получаем пользователя и передаем его в первый и второй сервис и получаем данные, которые мы можем передать в третий сервис или еще куда-нибудь...
Дмитрий, правильно ли я понимаю, что для каждого внешнего api будет правильно создать свой отдельный сервис или хелпер и там будет try catch со своим конкретным эксепшном, а в контроллере мы просту будем получать данные из этого сервиса с api и передавать в другой сервис с логикой?