我将数据库用于队列。
php artisan queue:work
未运行。
如果我从App\Models\Mail
添加到队列:ProcessMail::dispatch(['test' => 'test');
auto_increment值已更改,但是数据库中不存在行,日志中没有错误,也没有异常。如果我在控制器中尝试ProcessMail::dispatch(['test' => 'test');
可以正常工作:则将行创建到数据库。
这是ProcessMail的代码:
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Log;
class ProcessMail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $mailData;
/**
* Create a new job instance.
*
* @param [] $mailData
* @return void
*/
public function __construct($mailData)
{
$this->mailData = $mailData;
Log::info('job constructor');
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::info('job handle');
}
}
队列表结构:
CREATE TABLE `jobs` (
`id` bigint(20) UNSIGNED NOT NULL,
`queue` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`attempts` tinyint(3) UNSIGNED NOT NULL,
`reserved_at` int(10) UNSIGNED DEFAULT NULL,
`available_at` int(10) UNSIGNED NOT NULL,
`created_at` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
如何解决此问题?
答案 0 :(得分:0)
我发现了问题。我在ProcessMail::dispatch(['test' => 'test');
之后调用DB::beginTransaction();
,因为我调试了-我运行DB::rollback();
,因此创建的作业已从表中删除。这完全是我的错。也许有人会节省时间。