Когда проект добавлен, я извлекаю всех пользователей, у которых есть разрешение на его просмотр, и информирует их.
Это происходит в прослушивателе:
use App\Models\User;
use Illuminate\Support\Facades\Gate;
// ...
$notifiables = User::all()->filter(function(User $user) use($event) {
return Gate::forUser($user)->allows('view', $event->project);
});
Это работает.Но когда в моей системе 1000 пользователей и 5 из них могут просматривать проект, я перебираю более 995 пользователей даром.
И так как событие и слушатель работают синхронно, пользователь, добавляющий проект, долженподождите, пока это не произойдет.
Как я могу ускорить это?
Редактировать: Хорошо, можно поставить слушателей в очередь.Однако было бы здорово улучшить этот код.