PHP超时从php://输入读取PUT数据

时间:2016-09-14 13:30:38

标签: php rest timeout put

我创建了一个Restful-API。 我可以从php://输入读取PUT数据,但是我无法为此操作设置超时。如果读取PUT数据需要1秒以上,则应退出以下脚本。我还尝试了类似" file_gets_content"," stream_get_contents"等方法的不同变体。或者为" max_input_time"设置不同的值,但如果脚本需要比我设置的更长时间,脚本将不会停止。

$handle = fopen("php://input", "r");
$timeout = 1;

stream_set_timeout($handle, $timeout);
stream_set_blocking($handle, true);

$info = stream_get_meta_data($handle);

$putData = "";

while (!feof($handle)) {
    if (($putData .= fgets($handle, 4096)) === false) {
        $info = stream_get_meta_data($handle);
    }
}

fclose($handle);

if ($info['timed_out']) {
    throw new \Exception("timeout");
}

0 个答案:

没有答案