2016-07-18 13 views
1

私はPHP 5.5とlaravelでいくつかのタスクを非同期に実行したいと思っています。私はグーグルで、ラーベルキューがそのようなことをすることができることを知った。私は助けのためのこのリンクを見つけた:https://laravel.com/docs/5.1/queues。 私がインストールした依存関係:laravelのキューで非同期のジョブを実行できません

アマゾンSQS:AWS/AWS-SDK-PHP〜3.0

Beanstalkd:PDA/pheanstalk〜3.0

IronMQ:鉄-IO/iron_mq〜2.0 |〜 4.0

のRedis:predis/predis〜1.0

と私はlaravel.Hereでキュー表を追加しましたが、私の仕事のクラスである

class SearchFromSource extends Job implements SelfHandling{ 
    use InteractsWithQueue, SerializesModels; 
    private $provider; 
    private $query; 
    private $pageToken; 
    private $parameters; 
    private $needDetails; 

    public function __construct() 
    { 
    } 

    public function handle() 
    { 
     sleep(5); 
    } 
} 

と、ここで私は仕事を派遣するところである:

class SearchController extends Controller{ 
    ... 
    public function prepareResults($query, $page, $ip){ 
     $job = (new SearchFromSource($curVideoProvider,$this->query,$curVideoProvider->getDefaultParameters(),$curPageToken,$curVideoProvider->needDetails()))->onQueue("q1"); 
     $this->dispatch($job); 
     $job2 = (new SearchFromSource($curVideoProvider,$this->query,$curVideoProvider->getDefaultParameters(),$curPageToken,$curVideoProvider->needDetails()))->onQueue("q2"); 
     $this->dispatch($job2); 
    } 

} 

問題はlaravelジョブを非同期に実行されないということです。何が問題ですか。あなたはあなたの中にQUEUE_DRIVER(シンク、Redisの、豆の木など)を定義する必要があります

答えて

1
  1. まず
  2. ファイル.env次に、あなたがあなたの中php artisan queue:listenを実行して実行しているAAキューリスナーを持っている必要がありますあなたの仕事は、実装すべきディレクトリ
  3. を投写shouldqueueインターフェイス
+0

私はまだ動作しません。私はPHPの職人のキューを実行するとき:聞いて、ターミナルで何も表示されないジョブをディスパッチ – Alireza

+0

魔女キューのドライバを使用していますか? – Tsirigotis

+0

私は同期、データベースとredisを使用しましたが、diffrenceを作成しません – Alireza

関連する問題