在处理Mex模块的获取我的挂单请求时,发生了除零错误(Division by zero),导致请求返回500错误。
[2025-06-12T18:07:31.329446+08:00] laravel.ERROR: Division by zero {"exception":"[object] (DivisionByZeroError(code: 0): Division by zero at /var/www/html/app/Module/AppGame/Handler/Matchexchange/MyHandler.php:62)"}
MyHandler.php 第62行:$lastPage = ceil(($result['total'] ?? 0) / $pageSize);page 参数而没有传递 perPage 参数时,$page->getPerPage() 返回0$pageSize = min($pageSize, 100); 没有防止 $pageSize 为0的情况$lastPage 时发生除零错误修改分页参数处理逻辑,确保 $pageSize 最小值为1:
修改前:
// 限制分页大小
$pageSize = min($pageSize, 100);
$pageNum = max($pageNum, 1);
修改后:
// 限制分页大小,确保不为0
$pageSize = max(min($pageSize, 100), 1);
$pageNum = max($pageNum, 1);
使用命令 php artisan debug:reproduce-error request_1749722768045 进行验证:
验证响应数据:
{
"runUnid": "684aa73a9692c",
"runMs": "183",
"code": "OK",
"callpath": "Matchexchange-My",
"lastData": [],
"matchexchangeMy": {
"page": {
"currentPage": "1",
"perPage": "1",
"hasMore": true,
"lastPage": "2",
"total": "2"
}
}
}
app/Module/AppGame/Handler/Matchexchange/MyHandler.php1616fad9成功修复了Mex模块中获取我的挂单功能的除零错误,通过增强分页参数验证逻辑,确保了系统的稳定性和健壮性。修复后的代码能够正确处理各种分页参数情况,避免了类似的异常发生。