这段php为何执行完了才在html中显示
程序员文章站
2023-12-24 17:33:33
...
这段php为什么执行完了才在html中显示
.这个是从文本文件中读入每行内容,并显示在html中,我想实时显示,但这个似乎是等所有的循环执行完成了以后才显示的;求解,有没有什么办法让它循环一次显示一次;
------解决方案--------------------
While(true){
$N=Count(File($file));
IF($N!=$total){
$total = $N;
$HTM=File($file);
Echo '
ob_flush();
flush();
}Else{
usleep(1500);
}
}
------解决方案--------------------
php是服务端,全执行完了,才会一次性推给客户端。
如果你想实现一个一个的显示,需要使用缓冲,但好像服务器还要配置什么东西配合的。
------解决方案--------------------
服务器要关闭gzip,将buffer设置小一些。
浏览器也有buffer,这个没法关,所以每次服务器端输出时,填充一些空白字节进来。
都做到就可以实现实时输出了
------解决方案--------------------
$shi = fgets ( $shili,5) ;
这个 5 太小了
你示例的数据是 zzwc 在文件中还有回车换行
而 5 正好读到 zzwc\r 还剩 \n 没有读
下一次读到 \n 就结束了(这是 fgets 的约定)
由于没有读到数据,自然也就只输出“密码不正确”了
.这个是从文本文件中读入每行内容,并显示在html中,我想实时显示,但这个似乎是等所有的循环执行完成了以后才显示的;求解,有没有什么办法让它循环一次显示一次;
$shili = fopen ("test.txt","r") ; //打开文本
while ( !feof ( $shili ))//判断是否到了文件最后的函数
{
$shi = fgets ( $shili,1024 ) ; //读取其中的数据
$xx="!#$^";
//$headret = PostData($shi);
$headret="234234";
$bodaytext=$xx.$headret;
if(strpos($bodaytext,'密码错误') > 0) //判断返回值是不是空的,是空的就是没有'-'
{
echo $shi.":密码不正确"."";
continue;
}
else
{
echo $shi.":密码正确。跳出循环"."";
//break;
}
}
fclose ( $shili ) ;
------解决方案--------------------
While(true){
$N=Count(File($file));
IF($N!=$total){
$total = $N;
$HTM=File($file);
Echo '
',Htmlspecialchars(End($HTM)),'
';ob_flush();
flush();
}Else{
usleep(1500);
}
}
------解决方案--------------------
php是服务端,全执行完了,才会一次性推给客户端。
如果你想实现一个一个的显示,需要使用缓冲,但好像服务器还要配置什么东西配合的。
------解决方案--------------------
服务器要关闭gzip,将buffer设置小一些。
浏览器也有buffer,这个没法关,所以每次服务器端输出时,填充一些空白字节进来。
都做到就可以实现实时输出了
------解决方案--------------------
$shi = fgets ( $shili,5) ;
这个 5 太小了
你示例的数据是 zzwc 在文件中还有回车换行
而 5 正好读到 zzwc\r 还剩 \n 没有读
下一次读到 \n 就结束了(这是 fgets 的约定)
由于没有读到数据,自然也就只输出“密码不正确”了
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论