当使用自定义进程,如果使用日志实例,导致日志时区错误

xiaoming

问题描述

单例模式导致

程序代码或配置

if ($timezone = config('app.default_timezone')) {
   date_default_timezone_set($timezone);
}

执行晚于

\support\Log::channel('default')
$this->timezone = $timezone ?: new DateTimeZone(date_default_timezone_get() ?: 'UTC');
289 3 0
3个回答

xiaoming

@walkor 老大麻烦看下

  • 暂无评论
walkor 打赏

没有人反馈过这个问题,本地测试正常。
请发一个精简的能重现你问题的例子代码。

  • xiaoming 2024-10-23

    如果 php.ini 设置date.timezone = "Asia/Shanghai" 是正常 但如果是php.ini 是utc 则是不正常的

xiaoming

配置

<?php
//process.php

'task' => [
        'handler' => \Webman\App::class,
        'listen' => 'http://0.0.0.0:8686',
        'count' => 8, // 进程数
        'user' => '',
        'group' => '',
        'reusePort' => true,
        'constructor' => [
            'requestClass' => \support\Request::class, // request类设置
            'logger' => \support\Log::channel('default'), // 日志实例
            'appPath' => app_path(), // app目录位置
            'publicPath' => public_path() // public目录位置
        ]
    ]

打印日志

应该是 2024-10-23 21:xx:xx

[2024-10-23 13:50:59] default.INFO: hello [] []
[2024-10-23 13:54:30] default.INFO: hello [] []
  • walkor 2024-10-24

    好吧,原来是自定义http进程。下个版本修复。

×
🔝