webman里不支持think-validate的Validate::rule()方法
文檔里也有說(shuō)明,是我沒(méi)看到
請(qǐng) xingxing777 加我v qazink 200紅包奉上
所有的客戶端使用的api 都通過(guò)自定義路由的方式訪問(wèn)
/sendsms 指向 方法 send_sms 發(fā)送短信
/login 指向 方法 login 用于登錄,
在運(yùn)行了一段時(shí)間后,/send_sms 有可能會(huì)觸發(fā)其他路由內(nèi)的方法,比如login
有的時(shí)候是30% 的概率會(huì)運(yùn)行到別的方法上,有的時(shí)候是90%
補(bǔ)充,只要重啟,該問(wèn)題就會(huì)消失,暫時(shí)無(wú)法調(diào)試
本地沒(méi)有遇到過(guò),但是我不確定是否是因?yàn)槲覇?dòng)的時(shí)間不夠長(zhǎng),
目前是 nginx環(huán)境運(yùn)行一段時(shí)間有概率出現(xiàn),
如果解決了 驗(yàn)證可能會(huì)比較久(不超過(guò)一周),紅包會(huì)分兩次給!
以下為路由配置
Route::post('/sendsms', [LoginController::class, 'send_sms']); // 發(fā)送短信驗(yàn)證碼
// 需要登錄的接口
Route::group("", static function () {
Route::group('/member', static function () {
Route::get('/info', [MemberController::class, 'info']); // 會(huì)員信息
Route::post('/submit/verification', [MemberController::class, 'submit_verifications']); // 提交實(shí)名信息
Route::get('/verification', [MemberController::class, 'verification']); // 提交實(shí)名信息
Route::post('/feedback', [MemberController::class, 'feedback']); // 提交實(shí)名信息
});
Route::group('/tool', static function () {
Route::post('/ocr', [ToolController::class, 'ocr_idcard']); // 身份證識(shí)別
Route::post('/upload', [ToolController::class, 'uploadimg']); // 圖片上傳
});
Route::group('/order', static function () {
Route::get('/preview', [OrderController::class, 'preview']); // 下單預(yù)覽
Route::post('/submit', [OrderController::class, 'order']); // 下單
});
})->middleware([LoginMiddleware::class]);
// nginx 配置如下
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
location /prod/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://webman/;
}
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://webman/;
}
不能保100%復(fù)現(xiàn),重啟就會(huì)消失
nginx日志
上述nginx日志中,始終都是同一個(gè)方法,訪問(wèn)了同一個(gè)路由,但是 返回值的大小是不同的,其中
綠色框 15:50:09 發(fā)生的請(qǐng)求是正常響應(yīng)的,
藍(lán)色框都是錯(cuò)誤的,
紅色框是重啟后的,也都正常了。下面附上對(duì)應(yīng)的runtime日志
根據(jù)響應(yīng)時(shí)間和對(duì)應(yīng)使用的表格可以看到, 15:50:09 發(fā)生的請(qǐng)求是正常響應(yīng)的,后續(xù)的兩次都報(bào)錯(cuò)了
也和nginx日志能對(duì)應(yīng)上,
錯(cuò)亂的接口可能是登錄接口,下圖是我小伙伴給我的反饋,
也就是說(shuō) 訪問(wèn)的是 api/member/submit/verification 實(shí)際的調(diào)用方法卻是api/login對(duì)應(yīng)的方法
服務(wù)器環(huán)境
Linux iZtemyhm9wbs69Z 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
php版本 8.2
webman 版本 v2.1.2
請(qǐng)問(wèn)你使用什么驗(yàn)證器?
我使用的是 think\facade\Validate 和以前的think驗(yàn)證器 現(xiàn)在最新的不會(huì),具體我也忘了,但是我出現(xiàn)的頻率比較高,開(kāi)發(fā)階段。后面更換了。社區(qū)也有其他小伙伴遇到過(guò)
你在登錄接口那邊,可以增加記錄日志,只是看你描述發(fā)現(xiàn)不了什么
記錄日志每次請(qǐng)求的路由 是否是 api/login ,如果不是,就記錄 。
然后你nginx 為什么兩個(gè) location 是同樣的配置,完全沒(méi)必要呀