You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel队列Job的handle方法中获取Worker进程唯一标识

方案1:直接获取当前进程PID(最简单无额外依赖)

PHP内置了getmypid()函数可以直接获取当前执行进程的唯一PID,同时可以通过$this->job->getJobId()获取当前任务的队列ID,直接在Job类中调用即可:

class ProcessLocationJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $fetchLocation;

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // 获取当前Worker进程PID和任务ID
        $workerPid = getmypid();
        $jobId = $this->job->getJobId();
        Log::info("[worker:{$workerPid}] started processing JOB id {$jobId}");

        $this->fetchLocation->execute();
    }

    /**
     * Handle a job failure.
     *
     * @param  \Throwable  $exception
     * @return void
     */
    public function failed(Throwable $exception)
    {
        $workerPid = getmypid();
        $jobId = $this->job->getJobId();
        Log::error("[worker:{$workerPid}] job id {$jobId} failed: {$exception->getMessage()}" );
    }
}

该方案不需要修改任何额外配置,直接就能使用,完全符合你要求的日志输出格式。


方案2:全局日志自动添加工位标识(一劳永逸)

如果不想每个Job都重复写获取PID的代码,可以直接给日志系统全局添加工位标识上下文,所有日志都会自动带上该信息:

  1. 首先修改Supervisor配置,给每个Worker进程注入编号环境变量:
[program:laravel-worker]
...
user=admin
numprocs=8
environment=PROCESS_NUM=%(process_num)02d
...
  1. 修改Laravel日志配置config/logging.php,给你使用的日志通道添加进程ID处理器:
'daily' => [
    'driver' => 'daily',
    'path' => storage_path('logs/laravel.log'),
    'level' => env('LOG_LEVEL', 'debug'),
    'days' => 14,
    // 新增下面这行,自动注入PID到所有日志上下文
    'processors' => [Monolog\Processor\ProcessIdProcessor::class],
],

配置完成后所有日志都会自动带上PID信息,同时你可以在任意位置通过getenv('PROCESS_NUM')获取当前是第几个Worker进程。


方案3:监听队列事件全局记录任务日志

如果你需要所有任务的启动日志统一处理,不用每个Job都手动写记录代码,可以监听Laravel自带的JobProcessing事件:
在app/Providers/EventServiceProvider.php中注册事件监听:

protected $listen = [
    'Illuminate\Queue\Events\JobProcessing' => [
        'App\Listeners\LogJobProcessing',
    ],
];

然后创建对应的监听类,在里面统一记录所有任务的启动日志,自动带上Worker PID和任务ID即可。


内容的提问来源于stack exchange,提问作者Skywarth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:15:03