From 502ad3b62cd498257b3c7ed85f7b1d2aceaf1467 Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Fri, 23 Jun 2023 10:32:48 +0900 Subject: [PATCH] =?UTF-8?q?HT=E5=81=B4=E3=81=B8=E9=80=9A=E7=9F=A5=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=E8=BF=BD=E5=8A=A0=E3=80=80=E5=85=A8=E4=BD=93=E7=9A=84?= =?UTF-8?q?=E3=81=AB=E6=95=B4=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Codes/QueueName.php | 2 +- .../ChangeHandlerEvent.php | 14 ++++ .../ReceiptIssuingOrder/CompletedEvent.php | 14 ++++ .../ReceiptIssuingOrder/ConfirmedEvent.php | 14 ++++ .../ReceiptIssuingOrder/CreatedEvent.php | 14 ++++ .../ReceiptIssuingOrder/DownloadedEvent.php | 14 ++++ .../ReceiptIssuingOrder/MailOrderEvent.php | 14 ++++ .../ReceiptIssuingOrder/MailPostedEvent.php | 14 ++++ .../ReceiptIssuingOrderEvent.php | 23 ++++++ .../MailOrderController.php | 2 +- .../MailPostCompleteController.php | 6 +- .../Custom/HelloTechno/CacheParkingName.php | 2 +- .../HelloTechno/NoticeReceiptIssuingOrder.php | 67 +++++++++++++++++ .../Custom/HelloTechno/NoticeListener.php | 40 ++++++++++ .../ReceiptIssuingOrder/CreateManager.php | 13 +++- .../Custom/HelloTechno/CreateManager.php | 31 ++++---- .../PDFDownLoadManager.php | 10 +-- .../ReceiptIssuingOrderManager.php | 31 +++----- .../ReceiptIssuingOrder/UpdateManager.php | 74 +++++++++++++++++++ app/Models/AppModel.php | 10 +++ app/Models/ReceiptIssuingOrder.php | 6 ++ app/Providers/AppServiceProvider.php | 2 + app/Util/Custom/HelloTechno/API.php | 4 +- config/logging.php | 8 ++ database/factories/UserFactory.php | 2 +- .../2023_04_15_150500_create_users_table.php | 9 +-- database/seeders/TestUserSeeder.php | 12 ++- docker/8.2/php.ini | 3 + docker/8.2/supervisord.conf | 18 +++++ 29 files changed, 400 insertions(+), 73 deletions(-) create mode 100644 app/Events/ReceiptIssuingOrder/ChangeHandlerEvent.php create mode 100644 app/Events/ReceiptIssuingOrder/CompletedEvent.php create mode 100644 app/Events/ReceiptIssuingOrder/ConfirmedEvent.php create mode 100644 app/Events/ReceiptIssuingOrder/CreatedEvent.php create mode 100644 app/Events/ReceiptIssuingOrder/DownloadedEvent.php create mode 100644 app/Events/ReceiptIssuingOrder/MailOrderEvent.php create mode 100644 app/Events/ReceiptIssuingOrder/MailPostedEvent.php create mode 100644 app/Events/ReceiptIssuingOrder/ReceiptIssuingOrderEvent.php create mode 100644 app/Jobs/Other/Custom/HelloTechno/NoticeReceiptIssuingOrder.php create mode 100644 app/Listeners/ReceiptIssuingOrder/Custom/HelloTechno/NoticeListener.php diff --git a/app/Codes/QueueName.php b/app/Codes/QueueName.php index 2792102..6127a0d 100644 --- a/app/Codes/QueueName.php +++ b/app/Codes/QueueName.php @@ -6,5 +6,5 @@ enum QueueName: string { case EMAIL = 'email'; case SMS = 'sms'; - case OTHER = 'other'; + case JOB = 'job'; } diff --git a/app/Events/ReceiptIssuingOrder/ChangeHandlerEvent.php b/app/Events/ReceiptIssuingOrder/ChangeHandlerEvent.php new file mode 100644 index 0000000..20ae8f7 --- /dev/null +++ b/app/Events/ReceiptIssuingOrder/ChangeHandlerEvent.php @@ -0,0 +1,14 @@ +manager->initById($param->id) ->checkTimestamp($param->timestamp) - ->fill( + ->mailOrder( [ ...$param->toArray(), ReceiptIssuingOrder::COL_NAME_STATUS_ORDER_MAIL_DATETIME => DateUtil::now(), diff --git a/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteController.php b/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteController.php index 800d1d2..5fbe5dc 100644 --- a/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteController.php +++ b/app/Http/Controllers/Web/ReceiptIssuingOrder/MailPostCompleteController.php @@ -41,11 +41,7 @@ class MailPostCompleteController extends WebController $this->manager->initById($param->id) ->checkTimestamp($param->timestamp) - ->fill( - [ - ReceiptIssuingOrder::COL_NAME_STATUS_MAIL_POST_DATE => $param->statusMailPostDate - ] - ) + ->mailPosted($param->statusMailPostDate) ->update(); return $this->successResponse(); diff --git a/app/Jobs/Other/Custom/HelloTechno/CacheParkingName.php b/app/Jobs/Other/Custom/HelloTechno/CacheParkingName.php index 4df08d6..493c21e 100644 --- a/app/Jobs/Other/Custom/HelloTechno/CacheParkingName.php +++ b/app/Jobs/Other/Custom/HelloTechno/CacheParkingName.php @@ -28,7 +28,7 @@ class CacheParkingName implements ShouldQueue private string $customerCode, private string $parkingManagementCode ) { - $this->onQueue(QueueName::OTHER->value); + $this->onQueue(QueueName::JOB->value); } /** diff --git a/app/Jobs/Other/Custom/HelloTechno/NoticeReceiptIssuingOrder.php b/app/Jobs/Other/Custom/HelloTechno/NoticeReceiptIssuingOrder.php new file mode 100644 index 0000000..8c1f5ed --- /dev/null +++ b/app/Jobs/Other/Custom/HelloTechno/NoticeReceiptIssuingOrder.php @@ -0,0 +1,67 @@ +onQueue(QueueName::JOB->value); + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + try { + API::sendReceiptIssuingOrder($this->order, $this->custom); + } catch (Exception $e) { + $this->log(false); + throw $e; + } + + $this->log(true); + } + + public function log(bool $success) + { + $log = sprintf( + "[HelloTechno]領収証発行依頼情報送信[%s] %s ID:%s C:%s P:%s A:%d", + $this->eventName, + $success ? "成功" : "失敗", + $this->order->id, + $this->custom->customer_name, + $this->custom->parking_name, + $this->custom->adjust_seq_no ?? 0, + ); + + if ($success) { + logs()->info($log); + } else { + logs()->error($log); + } + } +} diff --git a/app/Listeners/ReceiptIssuingOrder/Custom/HelloTechno/NoticeListener.php b/app/Listeners/ReceiptIssuingOrder/Custom/HelloTechno/NoticeListener.php new file mode 100644 index 0000000..b9c985c --- /dev/null +++ b/app/Listeners/ReceiptIssuingOrder/Custom/HelloTechno/NoticeListener.php @@ -0,0 +1,40 @@ +notice($event->order, $event); + } + + /** + * Handle the event. + */ + private function notice(ReceiptIssuingOrder $order, ReceiptIssuingOrderEvent $event) + { + + $htCustom = $order->htCustomOrder; + if ($htCustom !== null) { + NoticeReceiptIssuingOrder::dispatch($order, $htCustom, $event->getEventName()); + } + } +} diff --git a/app/Logic/ReceiptIssuingOrder/CreateManager.php b/app/Logic/ReceiptIssuingOrder/CreateManager.php index c083579..4427d8e 100644 --- a/app/Logic/ReceiptIssuingOrder/CreateManager.php +++ b/app/Logic/ReceiptIssuingOrder/CreateManager.php @@ -4,10 +4,12 @@ namespace App\Logic\ReceiptIssuingOrder; use App\Codes\EnvironmentName; use App\Codes\SMSSendPurpose; +use App\Events\ReceiptIssuingOrder\CreatedEvent; use App\Logic\SMS\SMSManager; use App\Models\ReceiptIssuingOrder; use App\Util\DateUtil; use Illuminate\Support\Facades\View; +use Illuminate\Support\Str; use LogicException; class CreateManager extends ReceiptIssuingOrderManager @@ -22,16 +24,16 @@ class CreateManager extends ReceiptIssuingOrderManager public function init() { - $order = $this->order; - - $this->initialized = true; return $this; } public function id(): string { - return $this->order->id ?? ""; + if (!$this->order->id) { + $this->order->setId(); + } + return $this->order->id; } public function fill(array $attr) @@ -67,6 +69,9 @@ class CreateManager extends ReceiptIssuingOrderManager $smsSendOrder = $this->smsManager::makeSMSSendOrder($order, SMSSendPurpose::SEND_RECEIPT_ISSUING_ORDER_FORM, $this->makeSMSContents()); $smsSendOrder->send(); + // イベント登録 + CreatedEvent::dispatch($this->order); + return []; } diff --git a/app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/CreateManager.php b/app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/CreateManager.php index 026589a..f2edbba 100644 --- a/app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/CreateManager.php +++ b/app/Logic/ReceiptIssuingOrder/Custom/HelloTechno/CreateManager.php @@ -4,47 +4,42 @@ namespace App\Logic\ReceiptIssuingOrder\Custom\HelloTechno; use App\Jobs\Other\Custom\HelloTechno\CacheParkingName; use App\Logic\ReceiptIssuingOrder\CreateManager as BaseManager; +use App\Logic\SMS\SMSManager; use App\Models\ReceiptIssuingHTParkingCustomOrder; +use App\Models\ReceiptIssuingOrder; -class CreateManager +class CreateManager extends BaseManager { public function __construct( - protected BaseManager $manager, + ReceiptIssuingOrder $order, + SMSManager $smsManager, private ReceiptIssuingHTParkingCustomOrder $customOrder, ) { - } - - public function init(): static - { - $this->manager->init(); - return $this; + parent::__construct($order, $smsManager); } public function fill(array $attr): static { - $this->manager->fill($attr); $this->customOrder->fill($attr); - - return $this; + return parent::fill($attr); } public function create(): array { - $messages = $this->manager->create(); - - if (count($messages) !== 0) { - return $messages; - } - $this->customOrder->setReceiptIssuingOrder($this->manager->id()); + $id = $this->id(); + $this->customOrder->setReceiptIssuingOrder($id); $this->customOrder->save(); + $messages = parent::create(); + if (count($messages) !== 0) { + return $messages; + } // 駐車場名キャッシュ CacheParkingName::dispatch($this->customOrder->customer_code, $this->customOrder->parking_management_code); - return []; } } diff --git a/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php b/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php index 56cc856..28bbc29 100644 --- a/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php +++ b/app/Logic/ReceiptIssuingOrder/PDFDownLoadManager.php @@ -2,6 +2,7 @@ namespace App\Logic\ReceiptIssuingOrder; +use App\Events\ReceiptIssuingOrder\DownloadedEvent; use App\Exceptions\AppCommonException; use App\Models\ReceiptIssuingOrder; use App\Util\DateUtil; @@ -33,6 +34,9 @@ class PDFDownLoadManager extends ReceiptIssuingOrderManager if ($order->status_receipt_download_datetime === null) { $order->status_receipt_download_datetime = DateUtil::now(); + + // イベント登録 + DownloadedEvent::dispatch($this->order); } $this->save(); @@ -40,7 +44,6 @@ class PDFDownLoadManager extends ReceiptIssuingOrderManager } public function downlaodLetter() { - $order = $this->order; $data = $this->getPDFData(); $pdf = PDF::loadView('pdf/receipt_letter', $data); // はがきサイズを指定 @@ -48,11 +51,6 @@ class PDFDownLoadManager extends ReceiptIssuingOrderManager ->setOption('page-width', 100) ->setOption('encoding', 'utf-8') ->inline(); - if ($order->status_receipt_download_datetime === null) { - - $order->status_receipt_download_datetime = DateUtil::now(); - } - $this->save(); return $ret; } diff --git a/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php b/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php index 93607ef..b20975f 100644 --- a/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php +++ b/app/Logic/ReceiptIssuingOrder/ReceiptIssuingOrderManager.php @@ -2,6 +2,9 @@ namespace App\Logic\ReceiptIssuingOrder; +use App\Events\ReceiptIssuingOrder\ChangeHandlerEvent; +use App\Events\ReceiptIssuingOrder\ConfirmedEvent; +use App\Events\ReceiptIssuingOrder\MailOrderEvent; use App\Exceptions\AppCommonException; use App\Exceptions\ExclusiveException; use App\Features\InstanceAble; @@ -43,25 +46,23 @@ abstract class ReceiptIssuingOrderManager return $this; } - public function changeHandler(User $newHandler) + + public function getOrder(): array { if (!$this->initialized) { throw new LogicException("初期化ミス"); } - if ($this->order->contract_id !== $newHandler->contract_id) { - throw new AppCommonException('契約不正'); - } - $this->order->handler_id = $newHandler->id; - return $this; + + return $this->order->toArray(); } - public function getOrder(): array + public function getOrderModel(): ReceiptIssuingOrder { if (!$this->initialized) { throw new LogicException("初期化ミス"); } - return $this->order->toArray(); + return $this->order; } public function isConfirmed(): bool @@ -143,7 +144,7 @@ abstract class ReceiptIssuingOrderManager return true; } - protected function setStatus(): static + private function setStatus(): static { $order = $this->order; $order->status_done = false; @@ -207,17 +208,7 @@ abstract class ReceiptIssuingOrderManager return $this; } - public function setConfirm(): static - { - if ($this->order->receipt_no !== null) { - throw new LogicException("領収証確定済み変更検知"); - } - $this->order->receipt_no = $this->generateReceiptnNo(); - $this->order->status_receipt_confirm_datetime = DateUtil::now(); - return $this; - } - - private function generateReceiptnNo(): string + protected function generateReceiptnNo(): string { $count = 0; diff --git a/app/Logic/ReceiptIssuingOrder/UpdateManager.php b/app/Logic/ReceiptIssuingOrder/UpdateManager.php index 385fda6..b63a160 100644 --- a/app/Logic/ReceiptIssuingOrder/UpdateManager.php +++ b/app/Logic/ReceiptIssuingOrder/UpdateManager.php @@ -2,9 +2,17 @@ namespace App\Logic\ReceiptIssuingOrder; +use App\Events\ReceiptIssuingOrder\ChangeHandlerEvent; +use App\Events\ReceiptIssuingOrder\ConfirmedEvent; +use App\Events\ReceiptIssuingOrder\MailOrderEvent; +use App\Events\ReceiptIssuingOrder\MailPostedEvent; use App\Exceptions\AppCommonException; use App\Logic\SMS\SMSManager; use App\Models\ReceiptIssuingOrder; +use App\Models\User; +use App\Util\DateUtil; +use Illuminate\Support\Carbon; +use LogicException; class UpdateManager extends ReceiptIssuingOrderManager { @@ -16,6 +24,72 @@ class UpdateManager extends ReceiptIssuingOrderManager parent::__construct($order); } + public function changeHandler(User $newHandler) + { + if (!$this->initialized) { + throw new LogicException("初期化ミス"); + } + if ($this->order->contract_id !== $newHandler->contract_id) { + throw new AppCommonException('契約不正'); + } + $this->order->handler_id = $newHandler->id; + + ChangeHandlerEvent::dispatch($this->order); + + return $this; + } + + /** + * 郵送依頼 + * + * @param array $attr + * @return static + */ + public function mailOrder(array $attr): static + { + $this->fill($attr); + + // イベント登録 + MailOrderEvent::dispatch($this->order); + + return $this; + } + + /** + * 郵送投函完了 + * + * @param array $attr + * @return static + */ + public function mailPosted(Carbon $postDate): static + { + $this->order->status_mail_post_date = $postDate; + + // イベント登録 + MailPostedEvent::dispatch($this->order); + + return $this; + } + + /** + * 領収証確定 + * + * @return static + */ + public function setConfirm(): static + { + if ($this->order->receipt_no !== null) { + throw new LogicException("領収証確定済み変更検知"); + } + $this->order->receipt_no = $this->generateReceiptnNo(); + $this->order->status_receipt_confirm_datetime = DateUtil::now(); + + // イベント登録 + ConfirmedEvent::dispatch($this->order); + + return $this; + } + public function fill(array $attr) { $this->order->fill($attr); diff --git a/app/Models/AppModel.php b/app/Models/AppModel.php index 48a66ef..8ac7198 100644 --- a/app/Models/AppModel.php +++ b/app/Models/AppModel.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Str; abstract class AppModel extends BaseModel { @@ -19,4 +20,13 @@ abstract class AppModel extends BaseModel { return null; } + + public function setId(?string $uuid = null) + { + if ($uuid) { + $this->id = $uuid; + } else { + $this->id = Str::uuid(); + } + } } diff --git a/app/Models/ReceiptIssuingOrder.php b/app/Models/ReceiptIssuingOrder.php index ce008c8..af60654 100644 --- a/app/Models/ReceiptIssuingOrder.php +++ b/app/Models/ReceiptIssuingOrder.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Models\Feature\ContractFeature; +use Illuminate\Database\Eloquent\Relations\HasOne; class ReceiptIssuingOrder extends AppModel { @@ -65,4 +66,9 @@ class ReceiptIssuingOrder extends AppModel { return "領収証発行依頼"; } + + public function htCustomOrder(): HasOne + { + return $this->hasOne(ReceiptIssuingHTParkingCustomOrder::class); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 0c072e5..33ba070 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -38,6 +38,8 @@ class AppServiceProvider extends ServiceProvider Log::setDefaultDriver('queue-email'); } else if ($queueName === QueueName::SMS->value) { Log::setDefaultDriver('queue-sms'); + } else if ($queueName === QueueName::JOB->value) { + Log::setDefaultDriver('queue-job'); } }); diff --git a/app/Util/Custom/HelloTechno/API.php b/app/Util/Custom/HelloTechno/API.php index 0bda580..fe90cd4 100644 --- a/app/Util/Custom/HelloTechno/API.php +++ b/app/Util/Custom/HelloTechno/API.php @@ -110,7 +110,7 @@ class API $param['sms_phone_number'] = $order->sms_phone_number; $param['sms_send_success'] = $order->sms_send_success; $param['receipt_no'] = $order->receipt_no; - $param['receipt_use_date'] = $order->receipt_use_date; + $param['receipt_use_date'] = static::formatDateStr($order->receipt_use_date); $param['receipt_shop_name'] = $order->receipt_shop_name; $param['receipt_issuer'] = $order->receipt_issuer; $param['receipt_purpose'] = $order->receipt_purpose; @@ -124,7 +124,7 @@ class API $param['mail_address2'] = $order->mail_address2; $param['mail_address3'] = $order->mail_address3; $param['mail_name'] = $order->mail_name; - $param['updated_at'] = $order->updated_at; + $param['updated_at'] = static::formatDateStr($order->updated_at); return $param; } diff --git a/config/logging.php b/config/logging.php index 4718020..7a4dafe 100644 --- a/config/logging.php +++ b/config/logging.php @@ -160,6 +160,14 @@ return [ // 'replace_placeholders' => true, 'permission' => 0666, ], + 'queue-job' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/job.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + // 'replace_placeholders' => true, + 'permission' => 0666, + ], ], ]; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 474c2ce..26ad07b 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -23,7 +23,7 @@ class UserFactory extends Factory 'email' => fake()->unique()->safeEmail(), 'password' => Hash::make("testuser"), 'role' => UserRole::NORMAL_ADMIN, - 'contract_id' => Contract::factory(), + // 'contract_id' => Contract::factory(), ]; } } diff --git a/database/migrations/2023_04_15_150500_create_users_table.php b/database/migrations/2023_04_15_150500_create_users_table.php index 14c012e..758590d 100644 --- a/database/migrations/2023_04_15_150500_create_users_table.php +++ b/database/migrations/2023_04_15_150500_create_users_table.php @@ -32,7 +32,7 @@ return new class extends Migration return function (Blueprint $table, MigrationHelper $helper) use ($forHistory) { $helper->baseColumn() - ->contractId(); + ->contractId(true); $table->string('email')->comment("Email")->nullable(); $table->string('password')->comment("ログインパスワード")->nullable(); @@ -41,12 +41,7 @@ return new class extends Migration $helper->index(1, [ColumnName::CONTRACT_ID]); - - if ($forHistory) { - $helper->index(2, ['email']); - } else { - $helper->unique(1, ['email']); - } + $helper->index(2, ['email']); }; } }; diff --git a/database/seeders/TestUserSeeder.php b/database/seeders/TestUserSeeder.php index 66685bb..428e7f5 100644 --- a/database/seeders/TestUserSeeder.php +++ b/database/seeders/TestUserSeeder.php @@ -3,12 +3,9 @@ namespace Database\Seeders; use App\Codes\Custom; -use App\Codes\SMSProviderName; use App\Codes\UserRole; use App\Models\Contract; -use App\Models\SMSProvider; use App\Models\User; -use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; class TestUserSeeder extends Seeder @@ -19,9 +16,9 @@ class TestUserSeeder extends Seeder public function run(): void { - $contract = Contract::factory()->create([ - Contract::COL_NAME_NAME => 'テスト用契約' - ]); + // $contract = Contract::factory()->create([ + // Contract::COL_NAME_NAME => 'テスト用契約' + // ]); $emails = [ ['normal@aa.com', UserRole::NORMAL_ADMIN], @@ -31,7 +28,8 @@ class TestUserSeeder extends Seeder foreach ($emails as [$email, $role]) { if (!User::whereEmail($email)->exists()) { - User::factory()->for($contract)->create([ + // User::factory()->for($contract)->create([ + User::factory()->create([ User::COL_NAME_EMAIL => $email, User::COL_NAME_ROLE => $role, User::COL_NAME_NAME => $email . "太郎", diff --git a/docker/8.2/php.ini b/docker/8.2/php.ini index 39dcbca..2a6d903 100644 --- a/docker/8.2/php.ini +++ b/docker/8.2/php.ini @@ -5,3 +5,6 @@ variables_order = EGPCS [opcache] opcache.enable_cli=1 + +[xdebug] +xdebug.start_with_request=yes \ No newline at end of file diff --git a/docker/8.2/supervisord.conf b/docker/8.2/supervisord.conf index c5da80d..7538f29 100644 --- a/docker/8.2/supervisord.conf +++ b/docker/8.2/supervisord.conf @@ -48,4 +48,22 @@ stderr_logfile=/var/www/html/storage/logs/laravel-sms-worker.error.log stdout_logfile_maxbytes=1000000 stderr_logfile_maxbytes=1000000 stdout_logfile_backups=3 +stderr_logfile_backups=3 + +[program:laravel-job-worker] +process_name=%(program_name)s_%(process_num)02d +command=/usr/bin/php /var/www/html/artisan queue:work --queue=job --max-time=60 +autostart=true +autorestart=true +stopasgroup=true +killasgroup=true +user=sail +numprocs=1 +redirect_stderr=true +stopwaitsecs=100 +stdout_logfile=/var/www/html/storage/logs/laravel-other-worker.log +stderr_logfile=/var/www/html/storage/logs/laravel-other-worker.error.log +stdout_logfile_maxbytes=1000000 +stderr_logfile_maxbytes=1000000 +stdout_logfile_backups=3 stderr_logfile_backups=3 \ No newline at end of file