2016-05-07 6 views
1

Ich habe ein Formular, mit dem der Benutzer Text eingeben und ein Bild hochladen kann (das Bild wird dann verkleinert und zur Optimierung an TinyPNG.com gesendet). Nach dem Klicken auf den Senden-Button sendet das Formular Daten über JQuery AJAX. Ich möchte dem Benutzer eine Nachricht über On Success in der AJAX-Funktion zeigen, nachdem die Datenbuchung abgeschlossen ist, aber ohne auf die Bildbearbeitungsprozesse zu warten. Dazu habe ich eine Laravel Queue mit Eisen, mit dem folgenden Code:Laravel Iron Queue :: push scheint nicht asynchron

\Queue::push('RenameClassImage',[$_POST['temp_img_id'], $class_id,$final_path,$_POST['crop_w'],$_POST['crop_h'],$_POST['crop_x'],$_POST['crop_y']]); 

Insgesamt funktioniert alles einwandfrei, mit Ausnahme des AJAX Erfolg Funktion wird nur ausgelöst, nachdem der gesamte Bildbearbeitungsvorgang abgeschlossen ist (das ist ein wirklich lange dauert Zeit).

Unten ist meine Warteschlange Konfigurationsdatei. Wenn Sie möchten, dass ich einen anderen Code einfüge, lassen Sie es mich bitte wissen. Vielen Dank im Voraus

<?php 

return [ 

    /* 
    |-------------------------------------------------------------------------- 
    | Default Queue Driver 
    |-------------------------------------------------------------------------- 
    | 
    | The Laravel queue API supports a variety of back-ends via an unified 
    | API, giving you convenient access to each back-end using the same 
    | syntax for each one. Here you may set the default queue driver. 
    | 
    | Supported: "null", "sync", "database", "beanstalkd", 
    |   "sqs", "iron", "redis" 
    | 
    */ 
    'connections' => [ 

     'sync' => [ 
      'driver' => 'sync', 
     ], 

     'database' => [ 
      'driver' => 'database', 
      'table' => 'jobs', 
      'queue' => 'default', 
      'expire' => 60, 
     ], 

     'beanstalkd' => [ 
      'driver' => 'beanstalkd', 
      'host' => 'localhost', 
      'queue' => 'default', 
      'ttr' => 60, 
     ], 

     'sqs' => [ 
      'driver' => 'sqs', 
      'key' => 'your-public-key', 
      'secret' => 'your-secret-key', 
      'queue' => 'your-queue-url', 
      'region' => 'us-east-1', 
     ], 

     'iron' => [ 
      'driver' => env('QUEUE_DRIVER'), 
      'host' => env('QUEUE_HOST'), 
      'token' => env('QUEUE_TOKEN'), 
      'project' => env('QUEUE_PROJECT'), 
      'queue' => env('QUEUE_NAME'), 
      'encrypt' => true, 
     ], 

     'redis' => [ 
      'driver' => 'redis', 
      'connection' => 'default', 
      'queue' => 'default', 
      'expire' => 60, 
     ], 

    ], 

    /* 
    |-------------------------------------------------------------------------- 
    | Failed Queue Jobs 
    |-------------------------------------------------------------------------- 
    | 
    | These options configure the behavior of failed queue job logging so you 
    | can control which database and table are used to store the jobs that 
    | have failed. You may change them to any database/table you wish. 
    | 
    */ 

    'failed' => [ 
     'database' => 'mysql', 'table' => 'failed_jobs', 
    ], 

]; 
+0

Können Sie den Wert 'QUEUE_DRIVER' aus Ihrer' .env' Datei hinzufügen? –

+0

Sicher, es ist QUEUE_TYPE = Eisen QUEUE_HOST = mq-aws-us-east-1.iron.io QUEUE_TOKEN = pro mein Eisen Konto QUEUE_PROJECT = pro mein Eisen queue_name Konto = pro mein Eisen – user6122500

+0

Shouldnt Konto 'QUEUE_TYPE' sein 'QUEUE_DRIVER'? –

Antwort

0

In Ihrer .env Datei, die Sie in die Warteschlange gesetzt haben:

QUEUE_DRIVER=iron 
Verwandte Themen