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

webman的request的一些問題

dgkerry

問題描述

我使用webman并開啟協(xié)程(Workerman\Events\Swoole::class),使用1個進(jìn)程跑,我在support\Request上加了一個getRequestId()和_requestId()的方法,這樣每次請求進(jìn)來,就可以生成一個對應(yīng)的請求id(request_id),這樣我可以在日志上查找關(guān)于某個請求(request_id)究竟發(fā)生了什么事情,然后我做了以下測試(寫在后面),為何會有不同的結(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);//取消日志深度檢測
        sleep(3);
        $log->info($request->getRequestId().'請求進(jìn)來['.$id.']');
        return json(array('ok5'));
        }
}

測試

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

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

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

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

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

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

walkor 打賞

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

  • dgkerry 2025-03-05

    你這個辦法的確可行,謝謝啦

SillyDog

使用context也比較合適

  • walkor 2025-03-05

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

qq7467466

使用Context上下文獲取就不會出問題

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

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

  • qq7467466 2025-03-06

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

??