[英]Has Laravel 5.4 a solution to log jobs done?
我在我的項目中使用Laravel 5.4和MySQL。
遠程服務器是PHP Server 7
當用戶將記錄保存到數據庫時,它還會創建一個隊列作業來通知相關的公司官員。 我的代碼在控制器文件中
foreach($audit->mailusers AS $mailuser){
$this->dispatch(new SendAuditEmail($audit->id, $mailuser->name, $mailuser->email));
}
我正在為QUEUE DRIVER使用數據庫。 我的意思是它是用.env文件寫的:
QUEUE_DRIVER=database
如您所知,如果您使用的是“數據庫”而不是“redis”或其他隊列驅動程序,則數據庫中必須有“jobs”表:
CREATE TABLE `jobs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`queue` varchar(191) 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,
PRIMARY KEY (`id`),
KEY `jobs_queue_reserved_at_index` (`queue`,`reserved_at`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_unicode_ci;
如您所知,如果您想處理失敗的作業,您的數據庫中應該還有一個名為“failed_jobs”的表:
CREATE TABLE `failed_jobs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`connection` text COLLATE utf8mb4_unicode_ci NOT NULL,
`queue` text COLLATE utf8mb4_unicode_ci NOT NULL,
`payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`exception` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
要創建“failed_jobs”表( 源 ),首先必須運行artisan命令:
php artisan queue:failed-table
此命令將在database \\ migrations文件夾中創建遷移php文件
然后通過運行migrate命令,您可以創建failed_jobs表:
php artisan migrate
要處理作業表中的作業:
php artisan queue:work
隊列工作人員的行為如下:
1-如果“作業”表中的作業失敗,請將其保存到“failed_jobs”表並從“作業”表中刪除
2-如果作業成功完成,只需從“作業”表中刪除即可。 不要再在任何地方保存,只需刪除此作業即可。
最后,我的問題是:如果隊列工作者成功完成一個作業,那么無論如何都要將此作業記錄保存到名為“completed_jobs”的數據庫中的任何其他表中。
因為,對我來說很重要的是: “安德森先生的郵件是由Queue Worker在25.01.2018 15:42:20發送的”
Laravel解雇工作之前,之后和失敗的工作事件。 根據需要,您可以在事件后注冊偵聽器並存儲已成功運行的作業的記錄。
在服務提供者的引導方法中:
Queue::after(function (JobProcessed $event) {
// $event->connectionName
// $event->job
// $event->job->payload()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.