我已经建立了一个基本的laravel项目,配置最少,mysql数据库,数据库队列等。
我使用此内容创建了一个Job类
<?php
namespace App\Jobs;
use Exception;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class TestJob implements ShouldQueue
{
public $timeout = 10;
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
\Log::info("Job started");
sleep(12);
\Log::info("Job ended");
}
public function failed(Exception $exception){
\Log::info("Job failed");
}
}
为了简单起见,我在这条路线上发起了这个事件。
Route::get('/', function () {
dispatch(new \App\Jobs\TestJob());
return view('welcome');
});
我有php工匠队列:在终端中运行工作,当我在浏览器中访问基本URL路由时,作业排队。
我得到这个作为queue:work命令的输出。
ajeesh@mymachine:/var/www/html/queue$ php artisan queue:work
[2017-10-05 10:28:43] Processing: App\Jobs\TestJob
Killed
当我检查日志文件时,
ajeesh@mymachine:/var/www/html/queue/storage/logs$ tail laravel.log
[2017-10-05 10:28:43] local.INFO: Job started
它只有这个内容。
因为它会在10秒后超时\ Log :: info(&#34;作业结束&#34;);从来没有被执行看起来很好。
但是,我想知道,为什么失败的事件不会被调用。
我确保满足超时要求
ajeesh@mymachine:/var/www/html/queue$ php -v
PHP 7.1.10-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Sep 29 2017 17:04:25) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.10-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2017, by Zend Technologies
ajeesh@mymachine:/var/www/html/queue$ php -m | grep pcntl
pcntl
任何人都可以帮助理解我在这方面做错了什么吗?