无法在 laravel 队列中异步处理 运行 个作业
Cannot run jobs in asynchronous in laravel queue
我想 运行 在 php 5.5 和 laravel 中异步执行一些任务。我用谷歌搜索发现 laravel 队列可以做这样的事情。我找到这个 link 寻求帮助:https://laravel.com/docs/5.1/queues。
我已经安装了依赖项:
亚马逊 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.Here 中添加了队列表是我的工作 class
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 不会 运行 作业异步。有什么问题。
- 首先,您必须在 .env 文件中定义一个
QUEUE_DRIVER
(sync、redis、beanstalk 等)
- 那么你必须有一个队列监听器 运行在你的项目目录 运行
php artisan queue:listen
中
- 你的工作应该实现 shouldQUeue 接口
我想 运行 在 php 5.5 和 laravel 中异步执行一些任务。我用谷歌搜索发现 laravel 队列可以做这样的事情。我找到这个 link 寻求帮助:https://laravel.com/docs/5.1/queues。 我已经安装了依赖项:
亚马逊 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.Here 中添加了队列表是我的工作 class
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 不会 运行 作业异步。有什么问题。
- 首先,您必须在 .env 文件中定义一个
QUEUE_DRIVER
(sync、redis、beanstalk 等) - 那么你必须有一个队列监听器 运行在你的项目目录 运行
php artisan queue:listen
中 - 你的工作应该实现 shouldQUeue 接口