我创建了一个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");
}