Я пытаюсь поставить команду в очередь в версии Laravel 5.8. Но запись задания в таблице базы данных не удаляется автоматически.
Я пробовал следующие вещи.
1. Непосредственно Отправьте команду ремесленника согласно документации здесь
Документация очереди ремесленника
Artisan::queue('set:store_permissions', [
'app_id' => 1,
'user_id' => 1
])->onConnection('database')->onQueue('upgrade_for_permissions');
2. Создайте задание и отправьте его в команду Art Call Call Call.
[Отправка]
$d_t_s = new \stdClass();
$d_t_s->id = 1;
UpgradeDatabaseForPermissions::dispatch($d_t_s)->onConnection('database')->onQueue('upgrade_for_permissions');
[Job вызывает Artisan Command]
protected $user_id;
public $tries = 5;
public function __construct($d) {
$this->user_id = $d->id;
//
}
public function handle() {
$user_id = $this->user_id;
Storage::disk('local')->append('upgrade_permission.log', "Started :: user :: " . $user_id);
$artisan = Artisan::call('set:store_permissions', [
'app_id' => 1,
'user_id' => $user_id
]);
Storage::disk('local')->append('upgrade_permission.log', "End :: user :: " . $user_id . ' :: ');
return true;
}
Они оба работают отлично, проблема в том, что запись Job не удаляется из базы данных автоматически.
Если я удалю Artisan :: call из задания, оно будет автоматически удалено из базы данных.
Я также пытался вернуть true из самой команды и Job, но ни одна из них не работала.
Когда я запускаю
php artisan queue:work database --queue="upgrade_for_permissions"
Он выдает следующее
[2019-10-03 16:22:51][1] Processing: App\Jobs\UpgradeDatabaseForPermissions
[2019-10-03 16:22:52][1] Processed: App\Jobs\UpgradeDatabaseForPermissions
Но не удаляет саму запись очереди из таблицы базы данных. Это происходит только в том случае, если я запускаю в нем команду ремесленника.
[UpgradeDatabaseForPermissions :: class]
<?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;
use Artisan;
use Storage;
class UpgradeDatabaseForPermissions implements ShouldQueue {
use Dispatchable,
InteractsWithQueue,
Queueable,
SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
protected $user_id;
public $tries = 5;
public function __construct($d) {
$this->user_id = $d->id;
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle() {
$user_id = $this->user_id;
Storage::disk('local')->append('upgrade_permission.log', "Started :: user :: " . $user_id);
$artisan = Artisan::call('set:store_permissions', [
'app_id' => 1,
'user_id' => $user_id
]);
Storage::disk('local')->append('upgrade_permission.log', "End :: user :: " . $user_id . ' :: ');
return true;
}
}
[Данные после выполнения задания выполняются следующим образом]
- идентификатор - 1
- очередь - upgrade_for_permissions
- полезная нагрузка - данные полезной нагрузки
- попытки - 1
- reserved_at - 1570119771
- available_at - 1570119767
- create_at - 1570119767
[upgrade_permission.log] файл
Started :: user :: 1
End :: user :: 1 ::
Любые предложения будут полезны.