1. ProductImportService 新增 deferImages 模式與第 18 欄「圖片檔名」,匯入時收集 pending_images 供背景處理,並保留同步轉檔路徑。 2. 新增 AttachProductImagesJob:背景逐筆將圖片轉為 WebP 入庫、更新時刪除舊圖、重建目錄快取、清除暫存資料夾並寫入操作日誌。 3. ProductController::import 新增圖片 zip 上傳(上限 60MB)與安全解壓 extractImageZip:副檔名白名單、getimagesize 內容驗證、basename 防路徑穿越、項目數與單檔及總量上限防 zip bomb,解壓後派發背景 Job。 4. 匯入 Modal 新增選填的圖片 .zip 上傳欄位與背景處理提示文字。 5. config/queue.php 的 redis retry_after 提高至 1830(可由 REDIS_QUEUE_RETRY_AFTER 覆寫),避免長時間圖片任務未完成即被重複派發造成重複處理。 6. 三語系新增圖片匯入相關文案並對齊排序。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
111 lines
3.5 KiB
PHP
111 lines
3.5 KiB
PHP
<?php
|
||
|
||
return [
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Default Queue Connection Name
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| Laravel's queue API supports an assortment of back-ends via a single
|
||
| API, giving you convenient access to each back-end using the same
|
||
| syntax for every one. Here you may define a default connection.
|
||
|
|
||
*/
|
||
|
||
'default' => env('QUEUE_CONNECTION', 'sync'),
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Queue Connections
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| Here you may configure the connection information for each server that
|
||
| is used by your application. A default configuration has been added
|
||
| for each back-end shipped with Laravel. You are free to add more.
|
||
|
|
||
| Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
|
||
|
|
||
*/
|
||
|
||
'connections' => [
|
||
|
||
'sync' => [
|
||
'driver' => 'sync',
|
||
],
|
||
|
||
'database' => [
|
||
'driver' => 'database',
|
||
'table' => 'jobs',
|
||
'queue' => 'default',
|
||
'retry_after' => 90,
|
||
'after_commit' => false,
|
||
],
|
||
|
||
'beanstalkd' => [
|
||
'driver' => 'beanstalkd',
|
||
'host' => 'localhost',
|
||
'queue' => 'default',
|
||
'retry_after' => 90,
|
||
'block_for' => 0,
|
||
'after_commit' => false,
|
||
],
|
||
|
||
'sqs' => [
|
||
'driver' => 'sqs',
|
||
'key' => env('AWS_ACCESS_KEY_ID'),
|
||
'secret' => env('AWS_SECRET_ACCESS_KEY'),
|
||
'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
|
||
'queue' => env('SQS_QUEUE', 'default'),
|
||
'suffix' => env('SQS_SUFFIX'),
|
||
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
|
||
'after_commit' => false,
|
||
],
|
||
|
||
'redis' => [
|
||
'driver' => 'redis',
|
||
'connection' => 'default',
|
||
'queue' => env('REDIS_QUEUE', 'default'),
|
||
// 須大於最長 Job 的 timeout(AttachProductImagesJob 1800s),否則長任務未跑完即被重派造成重複處理
|
||
'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 1830),
|
||
'block_for' => null,
|
||
'after_commit' => false,
|
||
],
|
||
|
||
],
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Job Batching
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| The following options configure the database and table that store job
|
||
| batching information. These options can be updated to any database
|
||
| connection and table which has been defined by your application.
|
||
|
|
||
*/
|
||
|
||
'batching' => [
|
||
'database' => env('DB_CONNECTION', 'mysql'),
|
||
'table' => 'job_batches',
|
||
],
|
||
|
||
/*
|
||
|--------------------------------------------------------------------------
|
||
| Failed Queue Jobs
|
||
|--------------------------------------------------------------------------
|
||
|
|
||
| These options configure the behavior of failed queue job logging so you
|
||
| can control which database and table are used to store the jobs that
|
||
| have failed. You may change them to any database / table you wish.
|
||
|
|
||
*/
|
||
|
||
'failed' => [
|
||
'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'),
|
||
'database' => env('DB_CONNECTION', 'mysql'),
|
||
'table' => 'failed_jobs',
|
||
],
|
||
|
||
];
|