Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 回送慢加载数据的友好方式_Php - Fatal编程技术网

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

我有以下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

”,$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();
}