Как я могу уменьшить время выполнения 3 операции (добавить в базу данных, уведомления и трансляции) одновременно с laravel? - PullRequest
0 голосов
/ 08 апреля 2020

идея в том, что когда я пытаюсь добавить новый проект в базу данных, я также отправляю уведомление по электронной почте и транслирую уведомление базы данных другим пользователям, и это действие работает, но потратил много времени около 10 секунд, поэтому я попросил вас найти решение для уменьшения времени выполнения мой класс уведомлений:

  public function via($notifiable)
    {
        return ['mail','database','broadcast'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        return (new MailMessage)
        ->line('New Project :' . $this->data['projet'])
        ->action('Notification Action', url('/detail/'.$this->data['id']))
        ->line('Thank you for using our application!');
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toDatabase($notifiable)
    {
        return [

            'idprojet' => $this->data['id'],
            'projet' => $this->data['projet'],
            'typeNotification' =>'App\Notifications\NewProject'
        ];
    }
    public function toBroadcast($notifiable)
{
    return new BroadcastMessage([
        'idprojet' => $this->data['id'],
            'projet' => $this->data['projet'],
            'user' => auth()->user(),
            'typeNotification' =>'App\Notifications\NewProject'
    ]);
}

мой код в контроллере


     public function store(Request $request)
    {
        //


        $this->validate($request,[

            'name' => 'required|string|max:50',
            'durre' =>  'required|string|max:50',
            'description'=>'required|string|max:5000',
            'client_id' => 'required',
            'budget' => 'required',
              ]);


          $data = $request->all();
           $client = User::where('id', $data['client_id'])->first();
           $projet =new Projet;
            $projet->name = $data['name'];
            $projet->durre = $data['durre'];
            $projet->description = $data['description'];
            $projet->client_id = $data['client_id'];
            $projet->owner = $client->name;
            $projet->budget = $data['budget'];
            $projet->save();
          $ids=[$request->membre_id,$request->chefprojet];
           $chef = User::whereIn('id' , $ids)->get();
    $data = array(
'projet' => $projet->name,
'id' => $projet->id,
    );
          Notification::send( $chef,new NewProject ($data));
       }

Я также использую толкатель laravel, чтобы сделать уведомление в режиме реального времени

любое решение, пожалуйста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...