与PHP逐行输出

| 在编写一个小型应用程序时,我正在安装阶段,用户必须以一种形式(服务器名称,数据库名称,用户名...)输入有关MySQL连接的详细信息。 我想逐行显示测试结果和在窗口中完成的操作,最终在每个测试之间会有一个小暂停,例如:   \“与服务器的连接... \”(2s)\“ ok \”(2s)   \“连接到数据库... \”(2s)\“ ok \”(2s)   \“创建表格... \”(2s)\“确定\”    ....等等 我已经尝试过使用ob_start(),flush(),ob_flush(),但是由于我的网络服务器似乎会自行缓冲php输出,因此该脚本无法正常工作,因此该脚本需要很长时间才能运行,但所有内容都会同时打印。 我已经在这里和Google搜索过,但没有任何结果(可能没有正确的关键字) 你能给我指出解决办法吗? 用Ajax可能是? cc     
已邀请:
有多种解决方案,但是要完全禁用缓存并不容易。 因为在服务器端有一些可以禁用的缓存,但是浏览器也很有可能也进行缓存。 要解决此问题,您有几种选择: 伪造它,显示基于JavaScript的静态\“ animation \”,并在完成后重定向。 使用ajax,让安装脚本“ 0”将结果保存到文本文件/ mysql数据库,并使用不同的php脚本以设置的时间间隔加载文本文件/数据库并显示新结果。 使用专门针对此类内容的最新HTML5 / javascript流API,但是,很难找到与此相关的任何文档。 要禁用服务器端缓存,我使用以下代码:
@ini_set(\'zlib.output_compression\', 0);
@ini_set(\'implicit_flush\', 1);
for ($i = 0; $i < ob_get_level(); $i++) { ob_end_flush(); }
ob_implicit_flush(1);
header(\'Expires: Fri, 01 Jan 1990 00:00:00 GMT\');
header(\'Cache-Control: no-cache, no-store, max-age=0, must-revalidate\');
header(\'Pragma: no-cache\');
header(\'Connection: close\');
    
您是否在每次打印出来之前都尝试过usleep()? 编辑 您可以使用usleep()来使您的php脚本延迟执行,以便可以一一看到文本,它可以代替您的情况下使用缓冲。
mysql_connect() successfully -> print something -> usleep(300)
mysql_select_db() successfully -> print something -> usleep(300)
    

要回复问题请先登录注册