PHP中的非阻塞文件读取
我正在用php实现一个从文件中读取数据的脚本。它包含大约3万行。我面临的问题是,服务器读取文件、回显结果并发回页面需要花费大量时间。有没有什么方法可以让服务器在给定的时间(比如2秒)后发回响应PHP中的非阻塞文件读取,php,Php,我正在用php实现一个从文件中读取数据的脚本。它包含大约3万行。我面临的问题是,服务器读取文件、回显结果并发回页面需要花费大量时间。有没有什么方法可以让服务器在给定的时间(比如2秒)后发回响应 结果应包含文件中已处理的部分,在下一次回复中,应在接下来的2秒钟内发送已处理的部分。以循环方式读取文件,并在达到时间限制时结束循环 $fd = fopen($filename); $result = ''; $limit = 2; $stop_time = time() + $limit; $block_
结果应包含文件中已处理的部分,在下一次回复中,应在接下来的2秒钟内发送已处理的部分。以循环方式读取文件,并在达到时间限制时结束循环
$fd = fopen($filename);
$result = '';
$limit = 2;
$stop_time = time() + $limit;
$block_size = 1024;
while (time() < $stop_time) {
$result .= fread($fd, $block_size);
if (feof($fd)) {
break;
}
}
close($fd);
echo $result;
$fd=fopen($filename);
$result='';
$limit=2;
$stop_time=time()+$limit;
$block_size=1024;
while(time()<$stop\u time){
$result.=fread($fd,$block_size);
如果(联邦储备基金($fd)){
打破
}
}
收盘价(元);;
回声$结果;
有几种方法可以实现这一点:
- 客户向
http://example.com/process?file_position=0
- 服务器在位置0处开始处理,然后用文件的第一部分和新文件位置的数据进行响应
- 客户端向
http://example.com/process?file_position=1000
- 服务器在2秒钟内从新位置读取数据并再次回复
你试过什么吗?我该试什么。我已经写了脚本来读取文件,但没有其他脚本。我需要一些指导,以便编写脚本,这就是我在这里发布的原因。您可以使用ajax创建一个轮询系统来逐块读取文件,直到完全读取为止。文件读取从不阻塞,因此没有非阻塞文件读取。按要求。将它与客户端的适当请求相结合可以使这一过程变得相当快,但这并不能真正回答问题。没有一种方法对非阻塞有任何作用。@因此,关于非阻塞的问题没有任何内容。它在标题中,但这似乎是拙劣的措辞,指的是阅读整个文件所需的时间。哦,对了,我错了。这不是非块,fopen和fread本质上是阻塞的。@anru与2秒的时间限制相比,他们所花的时间可以忽略不计。@anru问题中没有需要非阻塞I/O的内容。标题对于他们在问题本身中所要求的内容来说是糟糕的措辞。