我有一个接受来自第三方的HTTP POST的服务器,然后返回一个200或500。
第三方不受我控制,有时会发送非常大的POST,例如40MB。
这些POST导致我的PHP代码耗尽内存,我无法赶上,所以Apache发送500。
API重试该POST永远,并不会发送新的数据,所以这是一个问题。
我已经尝试了各种各样的东西,但是最终以为如果我可以让.htaccess返回一个200,并且什么都不做,如果content_length> X,那么这至less会让我花时间去重构它的工作原理。
所以…
是否有可能在.htaccess中编写规则,如果content_length> X,则返回200?
不喜欢伪造“一切OK”的想法。 根据您的环境,您可能有多种方法:
php_value memory_limit 100M .htaccess或类似php.ini 增加内存PHP只能用于这个客户端。 试试像这样(未经testing, 192.168.1.0/24是远程系统的地址):
<If "-R '192.168.1.0/24'"> php_value memory_limit 100M </If>
如果一切都失败,请使用你的想法,如下所示:
RewriteCond %{HTTP:Content-Length} -ge 200000 RewriteRule ^ - [R=200]
这也是未经testing的,不太可能按原样工作,但其核心是RewriteCond %{HTTP:Content-Length}部分。