或者怎么實(shí)現(xiàn)比較優(yōu)雅呢
fpm模式下 可以在 index.php起始位置加入開始時(shí)間,cli 模式下怎么處理呢?
中間件
// 開始計(jì)時(shí)
$start_time = microtime(true);
//獲取響應(yīng)
$response = $next($request);
//計(jì)算耗時(shí)
$finish_time = microtime(true);
$cost_time = ($finish_time - $start_time) * 1000;
return $response;
有試過每一個(gè)中間件都記錄開始時(shí)間嗎?如果有,打印出來看看是不是都一樣的。最后一個(gè)中間件的結(jié)束時(shí)間減去最后一個(gè)中間件記錄的開始時(shí)間,是準(zhǔn)確的程序運(yùn)行耗時(shí)嗎?
我覺得是不是應(yīng)該在判斷URL是否命中路由的那個(gè)時(shí)候記錄開始時(shí)間,在執(zhí)行中間件后置操作的時(shí)候計(jì)算耗時(shí)比較合適呢?@walkor
建議了解一下什么叫中間件的洋蔥模型,如果實(shí)在整不明白你干脆就關(guān)閉控制器復(fù)用,初始化控制器的時(shí)候算開始時(shí)間,響應(yīng)客戶端前算結(jié)束時(shí)間
http://wtbis.cn/doc/webman/middleware.html
至于什么時(shí)候算開始時(shí)間,根據(jù)個(gè)人需求記錄,沒有統(tǒng)一的標(biāo)準(zhǔn),
有人可能需要在onMessage時(shí)就算開始時(shí)間
有人需要在第一個(gè)中間件算開始時(shí)間
有人可能覺得過了中間件,實(shí)際進(jìn)入控制器才算開始時(shí)間
按照 @2548a 的回答做就行了,匹配路由部分很快,約為0.0000x秒,并且框架有緩存(耗時(shí)基本為0),匹配路由部分不需要計(jì)算到耗時(shí)里。至于你要不要統(tǒng)計(jì)其它中間件的耗時(shí),像 @nitron 說的,取決決于你中間件配置順序,如果你在第一個(gè)中間件里統(tǒng)計(jì)耗時(shí),那么其它中間件的耗時(shí)就包括在內(nèi),如果在最后一個(gè)中間件統(tǒng)計(jì),就不包括。