php://输入的file_get_contents,内容长度不匹配

时间:2013-11-26 23:53:26

标签: php post stream

我正在使用php://inputfile_get_contents读取POST数据,但我注意到某些客户端没有发送正确的标头信息,即Content-Length标头更长比内容发送的实际长度。这导致file_get_contents等待占用宝贵的Apache线程。

我能够使用以下代码模拟该问题:

<?php

$ctx = stream_context_create(array(
  'http' => array(
    'timeout' => 1, 
  )  
) );

$input = file_get_contents('php://input', 0, $ctx);

print_r( $input );

使用以下测试命令调用脚本:

time curl -H 'Content-Type: application/json' -H 'Content-Length: 100' -X POST --verbose -k -d 'This is test data.' http://localhost/form.php

您可能会注意到,我将Content-Length设置为100,而实际测试数据长度仅为18。

我已尝试使用file_get_contents上的上下文来设置超时,但出于某种原因,这不会被考虑在内。

如何在合理的时间内(例如1或2秒)使file_get_contents超时?

0 个答案:

没有答案