Heim >Backend-Entwicklung >PHP-Tutorial >这段php为何执行完了才在html中显示

这段php为何执行完了才在html中显示

WBOY
WBOYOriginal
2016-06-13 11:10:14988Durchsuche

这段php为什么执行完了才在html中显示
.这个是从文本文件中读入每行内容,并显示在html中,我想实时显示,但这个似乎是等所有的循环执行完成了以后才显示的;求解,有没有什么办法让它循环一次显示一次;

<br />$shili = fopen ("test.txt","r") ;  //打开文本<br />	while ( !feof ( $shili ))//判断是否到了文件最后的函数<br />	{<br />		$shi = fgets ( $shili,1024 ) ;        //读取其中的数据<br />		$xx="!#$^";<br />		//$headret = PostData($shi);<br />		$headret="234234";<br />		$bodaytext=$xx.$headret;<br />		if(strpos($bodaytext,'密码错误') > 0)      //判断返回值是不是空的,是空的就是没有'-'<br />		{<br />			echo $shi.":密码不正确"."</br>";<br />			continue;<br />		}<br />		else<br />		{<br />			echo $shi.":密码正确。跳出循环"."</br>";<br />			//break;<br />		}<br />	}<br />	fclose ( $shili ) ; <br />


------解决方案--------------------
    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 的约定)
由于没有读到数据,自然也就只输出“密码不正确”了
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn