【发布时间】:2021-01-28 11:18:56
【问题描述】:
我不明白如何在上传超过 20mb 的文件时发送响应以避免 Heroku 的服务器错误。
我正在使用 PHP 7.4/Laravel 8.x 并且正在接收,
heroku[router]: sock=backend at=error code=H18 desc="Server Request Interrupted" method=POST
H18 表示套接字已连接,一些数据已作为应用程序响应的一部分发送,但随后套接字在未完成响应的情况下被销毁。
由于 Heroku 的 30 秒请求限制,它提前终止。
我已经配置了我的 .user.ini 文件,
post_max_size = 100M
upload_max_filesize = 100M
max_input_time = 300
max_execution_time = 300
我在 Procfile 中声明它,
web: vendor/bin/heroku-php-apache2 -i .user.ini public/
我接受表单中的多个文件,
<input style="display:none;" type="file" id="files" name="attachment[]" multiple required>
<label for="files" class="files-button" id="filesButton">Upload Images</label>
如果文件是图片,我上传它
ini_set('memory_limit', '-1'); // more memory
if($request->hasFile('attachment')) {
$valid_exts = ['png', 'jpg', 'jpeg'];
foreach ($files as $file) {
$extension = $file->getClientOriginalExtension();
if (in_array($extension, $valid_exts)) {
Storage::disk('s3')->put("/model images/$url_name/", $file);
}
}
}
}
有什么办法可以解决这个 30 秒的强制超时?
【问题讨论】:
标签: php laravel heroku upload php-ini