我有以下网络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可以打开套接字并中断套接字数据吗?也许使用闪存(我知道可以使用套接字......)
答案 0 :(得分:0)
也许您可以将其设置为流并从中fread
设置它?结合flush
。
尝试从exec
或system
读取输出或从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()。