> 백엔드 개발 > PHP 튜토리얼 > 这段php为何执行完了才在html中显示

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

WBOY
풀어 주다: 2016-06-13 12:57:17
원래의
738명이 탐색했습니다.

这段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 的约定)
由于没有读到数据,自然也就只输出“密码不正确”了
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿