友好的方式回应缓慢加载数据

时间:2012-03-03 22:48:05

标签: php

我有以下网络PHP代码:

while ($row = mysql_fetch_array($results, MYSQL_NUM))
{
printf("<p>ID: %s</p>", $row[0]);
echo exec ("php analysis.php " .escapeshellcmd($row[0]));
}

对于一组4k用户,以下代码需要15分钟才能执行,结果以~1k用户的增量显示。

我希望结果显示在代码运行的速度附近,这样任何使用该页面的人都会对天气与代码的工作情况混淆。有没有办法强制浏览器显示它发送的数据?

编辑: Flush没有产生明显不同的输出 编辑: 我的问题仍未得到解决?是否有一些客户端服务器模型可以在JavaScript中实现以方便这一点? Javascript可以打开套接字并中断套接字数据吗?也许使用闪存(我知道可以使用套接字......)

3 个答案:

答案 0 :(得分:0)

也许您可以将其设置为流并从中fread设置它?结合flush

尝试从execsystem读取输出或从PHP调用命令行程序的众多方法之一时,我总是遇到坚固的墙壁~~~

答案 1 :(得分:0)

尝试使用flush

刷新输出缓冲区
while ($row = mysql_fetch_array($results, MYSQL_NUM))
{
  printf("<p>ID: %s</p>", $row[0]);
  echo exec ("php analysis.php " .escapeshellcmd($row[0]));
  flush();
}

如果您的服务器使用输出缓冲,请在脚本开头调用ob_flush后使用ob_start

答案 2 :(得分:0)

echo exec(...)在命令完成之前等待。如果您不介意显示部分信息,请使用passthru(...)

根据您的网络服务器,flush可能有效。如果启用了输出缓冲(隐式使用ob_start()或在php.ini中显式),则还需要调用ob_flush()