Webman上传大文件停止响应

JiangCat

问题描述

在webman中上传大文件,即便没有超过config('server.max_package_size')规定的体积,也会强制close()掉connection,导致Apache代理返回502 Bad Gateway。

仔细检查了/vendor/workerman/webman-framework/src/support/App.php中Line 90的相关代码,确认了config应该是有生效的

TcpConnection::$defaultMaxPackageSize = $config['max_package_size'] ?? 10 * 1024 * 1024;

php.ini的相关设置也确认过没问题

post_max_size = 1024M
upload_max_filesize = 512M
memory_limit = 1024M

程序代码或配置

config/server.php

return [
    'name' => 'HolosNexus S1',
    'event_loop' => '',
    'stop_timeout' => 2,
    'pid_file' => runtime_path() . '/webman.pid',
    'status_file' => runtime_path() . '/webman.status',
    'stdout_file' => runtime_path() . '/logs/stdout.log',
    'log_file' => runtime_path() . '/logs/workerman.log',
    'max_package_size' => 512 * 1024 * 1024,
    'root_dir'  => '/data2/www/com.holosnexus/s1'
];

重现问题的步骤

上传的文件241M

操作系统环境及workerman/webman等具体版本

composer.json

"require": {
    "php": ">=8.1",
    "workerman/webman-framework": "^2.1",
    "monolog/monolog": "^2.0",
    "workerman/crontab": "^1.0",
    "illuminate/database": "^12.35",
    "webman/database": "^2.1",
    "symfony/var-dumper": "^7.3",
    "illuminate/events": "^12.35",
    "webman/action-hook": "^1.0",
    "illuminate/redis": "^12.35",
    "tencentcloud/sms": "^3.0",
    "tencentcloud/ims": "^3.0",
    "tencentcloud/tms": "^3.0",
    "tencentcloud/ocr": "^3.0",
    "intervention/image": "^3.11",
    "endroid/qr-code": "^6.0",
    "webman/cache": "^2.1",
    "wechatpay/wechatpay": "^1.4",
    "wechatpay/wechatpay-guzzle-middleware": "^0.2.2",
    "guzzlehttp/guzzle": "^7.10",
    "php-ffmpeg/php-ffmpeg": "^1.3"
  }
42 0 0
0个回答

🔝