国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

webman的request的一些問(wèn)題

dgkerry

問(wèn)題描述

我使用webman并開啟協(xié)程(Workerman\Events\Swoole::class),使用1個(gè)進(jìn)程跑,我在support\Request上加了一個(gè)getRequestId()和_requestId()的方法,這樣每次請(qǐng)求進(jìn)來(lái),就可以生成一個(gè)對(duì)應(yīng)的請(qǐng)求id(request_id),這樣我可以在日志上查找關(guān)于某個(gè)請(qǐng)求(request_id)究竟發(fā)生了什么事情,然后我做了以下測(cè)試(寫在后面),為何會(huì)有不同的結(jié)果?

support\Request代碼

namespace support;

/**
 * Class Request
 * @package support
 */
class Request extends \Webman\Http\Request
{
    public function getRequestId(){
        if(!isset($this->data['request_id'])){
            $this->data['request_id']=self::_requestId();
        }
        return $this->data['request_id'];
    }
    private static function _requestId(){
        //這里生成固定格式的xxxx-xxxxxxxx-xxxx-xxxx字符串
        $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $randomPart = '';
        $length = 20;
        for ($i = 0; $i < $length; $i++) {
            $randomPart .= $characters[rand(0, strlen($characters) - 1)];
        }
        $request_id = sprintf('%s-%s-%s-%s', 
            substr($randomPart, 0, 4), 
            substr($randomPart, 4, 8), 
            substr($randomPart, 12, 4), 
            substr($randomPart, 16, 4)
        );
        return $request_id;
    }
}

控制器代碼

namespace app\controller;
use support\Log;
class IndexController{
    public function test(Request $request){
        $log = Log::channel('log2');
        $id = $request->get('id');
        $log->useLoggingLoopDetection(false);//取消日志深度檢測(cè)
        sleep(3);
        $log->info($request->getRequestId().'請(qǐng)求進(jìn)來(lái)['.$id.']');
        return json(array('ok5'));
        }
}

測(cè)試

1.1、通過(guò)網(wǎng)址方式刷新同一個(gè)url 10次(https://網(wǎng)址/test?id=0),log記錄如下,對(duì)應(yīng)的request_id全部都是同一個(gè)(A4YW-7LIEBMUC-NPPM-RY4V

[2025-03-05 11:31:30]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:31:37]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:24]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:25]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:26]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:27]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:27]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:28]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:28]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:43:28]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[0]

(瀏覽器也沒有說(shuō)長(zhǎng)連接)
截圖
1.1、通過(guò)網(wǎng)址方式刷新同一個(gè)url,但不同的傳參(https://網(wǎng)址/test?id=xxx) 10次(id=1~10),log記錄如下,每一個(gè)請(qǐng)求的request_id都不一樣

[2025-03-05 11:53:13]log2.INFO: VTJD-9Y534GN6-7970-LCB6請(qǐng)求進(jìn)來(lái)[0]
[2025-03-05 11:54:18]log2.INFO: A4YW-7LIEBMUC-NPPM-RY4V請(qǐng)求進(jìn)來(lái)[1]
[2025-03-05 11:54:21]log2.INFO: MFAC-HMRQUSA9-XMOR-HBFO請(qǐng)求進(jìn)來(lái)[2]
[2025-03-05 11:55:05]log2.INFO: T95Q-12Q526TB-6P13-LM05請(qǐng)求進(jìn)來(lái)[3]
[2025-03-05 11:55:11]log2.INFO: KU9G-3DMFRHSE-188W-Q27P請(qǐng)求進(jìn)來(lái)[4]
[2025-03-05 11:55:13]log2.INFO: 6YP6-AYWWTF7J-DWD3-ZU1C請(qǐng)求進(jìn)來(lái)[5]
[2025-03-05 11:55:16]log2.INFO: TLVQ-B9YEOCUK-L829-J8FL請(qǐng)求進(jìn)來(lái)[6]
[2025-03-05 11:55:17]log2.INFO: AJVA-J0F9DAUT-W5Z3-PW0M請(qǐng)求進(jìn)來(lái)[7]
[2025-03-05 11:55:19]log2.INFO: XM02-KIGW5L6E-AB9I-IN23請(qǐng)求進(jìn)來(lái)[8]
[2025-03-05 11:55:22]log2.INFO: YQ7F-Y0ZRGNQQ-V05H-DR4B請(qǐng)求進(jìn)來(lái)[8]
[2025-03-05 11:55:23]log2.INFO: 9FN1-64QRUGPY-U8OV-M2RU請(qǐng)求進(jìn)來(lái)[9]
[2025-03-05 11:55:26]log2.INFO: DC6Y-K5WAXRFT-2F22-JMAY請(qǐng)求進(jìn)來(lái)[10]

2、通過(guò)php的異步請(qǐng)求方式(GuzzleHttp\Client、GuzzleHttp\Promise)請(qǐng)求10次

[2025-03-05 11:47:01] log2.INFO: EH1E-ULZO34ZF-P0PK-Y484請(qǐng)求進(jìn)來(lái)[1]
[2025-03-05 11:47:01] log2.INFO: GWC6-WX7IQOIW-7HAH-FN41請(qǐng)求進(jìn)來(lái)[4]
[2025-03-05 11:47:01] log2.INFO: TSI6-YI5HDMFC-U34A-5DO9請(qǐng)求進(jìn)來(lái)[3]
[2025-03-05 11:47:01] log2.INFO: 0OF3-NYRENBZM-IRP9-I8AA請(qǐng)求進(jìn)來(lái)[2]
[2025-03-05 11:47:01] log2.INFO: V002-5QEY865H-D4EF-KRJW請(qǐng)求進(jìn)來(lái)[5]
[2025-03-05 11:47:01] log2.INFO: SLM9-I8Y0B5GV-KN0J-QZCB請(qǐng)求進(jìn)來(lái)[7]
[2025-03-05 11:47:01] log2.INFO: 2BQ7-HXZN2RBK-BERA-9ZRI請(qǐng)求進(jìn)來(lái)[8]
[2025-03-05 11:47:01] log2.INFO: VOJG-4FWBYMD8-SGTH-VTWC請(qǐng)求進(jìn)來(lái)[6]
[2025-03-05 11:47:01] log2.INFO: LQ2N-LL6YZJV4-VNQ4-EP1M請(qǐng)求進(jìn)來(lái)[9]
[2025-03-05 11:47:01] log2.INFO: JPPW-CXY8O1ZU-HVTP-KCWN請(qǐng)求進(jìn)來(lái)[0]
574 3 1
3個(gè)回答

walkor 打賞

用 $this->requestId 來(lái)記錄 requestId,不要用 $this->data['request_id'])來(lái)記錄。$this->data 不適合用來(lái)存儲(chǔ)于請(qǐng)求相關(guān)的狀態(tài)數(shù)據(jù)。

  • dgkerry 2025-03-05

    你這個(gè)辦法的確可行,謝謝啦

SillyDog

使用context也比較合適

  • walkor 2025-03-05

    放context里就更好了,一個(gè)原則,請(qǐng)求相關(guān)的狀態(tài)數(shù)據(jù)放到context里。

qq7467466

使用Context上下文獲取就不會(huì)出問(wèn)題

// 設(shè)置數(shù)據(jù)
Context::set('trace_id', 'XXXX-XXXX');
// 讀取數(shù)據(jù)
Context::get('trace_id')
  • dgkerry 2025-03-06

    這樣寫,可以在任意地方獲取到嗎?如在控制器下、實(shí)例某個(gè)類后在這個(gè)類的某個(gè)方法下

  • qq7467466 2025-03-06

    在整個(gè)生命周期里面都是可以獲取到的, trace_id一般都是在中間件設(shè)置的, 然后其他地方讀取

??