2016-11-11 5 views
1

ich mit Laravel Queues helfen müssen, wenn mir jemand weiter helfen kann, ich diese Schritte bis jetztVerwendung Datenbank Queue Laravel statt Sync Stellen

  1. getan haben, änderte sich die QUEUE DRIVER in .env-Datei Datenbank

  2. erstellt Migrationen für Tabellen Jobs Warteschlange und failed-Jobs

    php artisan queue:table 
    php artisan queue:failed-table 
    

und ich habe ru n php Handwerkers wandern

  1. erstellt einen neuen Job

    php artisan make:job SendNewArticleNotification 
    

Update:

Ok i erstellt haben, eine Route/Warteschlange

Route::get('/queue', function() { 

    dispatch(new \App\Jobs\SendNewArticleNotification); 

}); 

und in meinem Job SendNewArticleNotification habe ich diese

<?php 

namespace App\Jobs; 

use App\User; 
use Illuminate\Bus\Queueable; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Queue\InteractsWithQueue; 
use Illuminate\Contracts\Queue\ShouldQueue; 

class SendNewArticleNotification implements ShouldQueue 
{ 
    use InteractsWithQueue, Queueable, SerializesModels; 

    /** 
    * Create a new job instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     // 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 

     $users = User::all(); 

     $article = \App\Article::first(); 

     foreach ($users as $user) { 
      $user->notify(new \App\Notifications\Published($article)); 
     }  


    } 
} 

Und wenn ich meine/queue Route treffen die E-Mails gesendet werden, beeing aber sie verwenden nicht die Datenbanktabelle .... es dauert mehr als 30 Sekunden 50 Mails senden ...

UPDATE

Ok ich endlich herausgefunden, dass dispatch() muss in einer Controller-Methode sein, weil der Controller hat die Trait-Jobs zu entsenden .... und jetzt sind meine Jobs in Warteschlange in DB-Tabelle Jobs .... so Wie kann ich sie hinter den Kulissen auslösen?

Antwort

2

Setzen Sie Ihren Versand in Ihrem Controller-Methode und führen

php artisan queue:work