1

PHP 5.5 と laravel でいくつかのタスクを非同期で実行したいと考えています。私はググって、laravelキューがそのようなことをできることを知りました。ヘルプのこのリンクを見つけました: https://laravel.com/docs/5.1/queues。依存関係をインストールしました:

Amazon SQS: aws/aws-sdk-php ~3.0

Beanstalkd: pda/pheanstalk ~3.0

IronMQ: iron-io/iron_mq ~2.0|~4.0

Redis: predis/predis ~1.0

そして、laravelにキューテーブルを追加しました。ここに私のJobクラスがあります

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 が非同期でジョブを実行しないことです。何が問題ですか。

4

1 に答える 1