我有一个服务器接受来自第 3 方的 HTTP POST,然后返回 200 或 500。
第 3 方不受我控制,有时会发送非常大的 POST,例如 40MB。
这些 POST 导致我的 PHP 代码内存不足,我无法捕获,因此 apache 发送了 500。
API 会永远重试 POST,并且不会发送新数据,所以这是一个问题。
我已经尝试了各种方法,但最终认为如果我可以让 .htaccess 只返回 200 并且不执行任何其他操作,如果 content_length 大于 X,那么这至少可以让我有时间重新构建它的工作方式。
所以…
是否可以在 .htaccess 中编写规则,如果 content_length > X,则返回 200?
我不喜欢假装“一切正常”的想法,而事实并非如此。根据您的环境,您可能有多种方法:
php_value memory_limit 100M
in.htaccess
或类似 inphp.ini
增加 PHP 可能仅用于此客户端的内存。尝试这样的事情(未经测试,
192.168.1.0/24
是远程系统的地址):如果一切都失败了,请使用您的想法,如下所示:
这也未经测试,不太可能按原样工作,但它的核心是
RewriteCond %{HTTP:Content-Length}
部件。