Php 回送慢加载数据的友好方式
我有以下web php代码:Php 回送慢加载数据的友好方式,php,Php,我有以下web php代码: while ($row = mysql_fetch_array($results, MYSQL_NUM)) { printf("<p>ID: %s</p>", $row[0]); echo exec ("php analysis.php " .escapeshellcmd($row[0])); } while($row=mysql\u fetch\u数组($results,mysql\u NUM)) { printf(“ID:%s”,$ro
while ($row = mysql_fetch_array($results, MYSQL_NUM))
{
printf("<p>ID: %s</p>", $row[0]);
echo exec ("php analysis.php " .escapeshellcmd($row[0]));
}
while($row=mysql\u fetch\u数组($results,mysql\u NUM))
{
printf(“ID:%s”,$row[0]);
echo exec(“php analysis.php”.escapeshellcmd($row[0]);
}
对于一组4k用户,执行以下代码需要15分钟,结果以~1k用户的增量显示
我希望结果以代码运行的速度显示,这样任何使用页面的人都会对代码是否有效感到困惑。是否有办法强制浏览器显示发送的数据
编辑:
Flush
不会产生明显不同的输出。编辑:
我的问题还没有解决?是否有一些客户机-服务器模型可以用JavaScript实现以促进这一点?Javascript可以打开套接字并中断套接字数据吗?也许可以使用flash(我知道它可以使用sockets…也许你可以将它设置为一个流,然后从中
fread
?与flush
组合使用
当我试图从
exec
或system
读取输出时,或者从PHP调用命令行程序的多种方法中的一种时,我总是遇到重重困难。尝试使用以下方法刷新输出缓冲区:
while($row=mysql\u fetch\u数组($results,mysql\u NUM))
{
printf(“ID:%s”,$row[0]);
echo exec(“php analysis.php”.escapeshellcmd($row[0]);
冲洗();
}
如果服务器使用输出缓冲,请在脚本开头调用ob\u start
后使用ob\u flush
。echo exec(…)
等待命令完成。如果您不介意显示部分信息,请使用passthru(…)
根据您的Web服务器,可能有效,也可能无效。如果启用了输出缓冲(隐式地使用
ob_start()
或显式地在php.ini中),那么也需要调用输出缓冲。为什么不将analysis.php
中的所有内容都放在一个函数中,include()
一次文件,然后从循环中调用该函数?使用exec
进行这种操作似乎有些过分(您应该使用它来转义参数,而不是escapeshellcmd
)。
while ($row = mysql_fetch_array($results, MYSQL_NUM))
{
printf("<p>ID: %s</p>", $row[0]);
echo exec ("php analysis.php " .escapeshellcmd($row[0]));
flush();
}