Невозможно выполнить задания в асинхронном режиме в очереди laravel.

Я хочу запускать некоторые задачи асинхронно в 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: предисловие / предисловие ~ 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 не выполняет задания асинхронно. В чем проблема.

1

Решение

  1. Сначала вы должны определить QUEUE_DRIVER (Sync, Redis, Beanstalk и т. д.) в вашем файле .env
  2. Тогда у вас должен быть запущен прослушиватель очереди. php artisan queue:listen внутри вашего каталога проекта
  3. Ваша работа должна Реализовать mustQeue интерфейс
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]