打印大量信息时PHP非常慢

时间:2010-09-15 07:32:22

标签: php performance printing

我有一个应用程序,我需要从数据库中检索大量的行,然后将它们全部打印在屏幕上。我检查了mysql查询,这不是问题所在。问题是所有行都需要打印在同一页面上,没有分页,而且需要很长时间(我说的是一个带有几行行的表)。有什么方法可以加快速度吗?我在Google上发现的唯一一件事是使用“,”而不是“。”使用echo时我将测试这个以确定是否有任何改进,但我不确定它会产生如此大的差异。

2 个答案:

答案 0 :(得分:6)

问题不太可能是PHP,而是大量的HTML输出到浏览器。您可以通过保存所获得的页面,然后从硬盘驱动器加载静态文件来自行验证。

如果您要输出一个大表,那么浏览器在加载内容时经常会出现“重绘”问题。这可以通过为所有列设置固定宽度来最小化。只需在第一行执行此操作。

您也可以跳出PHP块来输出大部分HTML,然后只需在适当的位置打印变量。这是一个示例,假设您的所有数据都在$rows变量中:

<?php
  // some code here
?>

<table>
<thead>
<tr>
  <th width="50">Header 1</th>
  <th width="200">Header 2</th>
  <th width="150">Header 3</th>
  <th width="100">Header 4</th>
</tr>
</thead>
<tbody>
<?php foreach ( $rows as $r ) : ?>
<tr>
  <td><?=$r['var1']?><td>
  <td><?=$r['var2']?><td>
  <td><?=$r['var3']?><td>
  <td><?=$r['var4']?><td>
</tr>
<?php endforeach; ?>
</tbody>
</table>

<?php
  // continue here if necessary

注意:如果您没有启用PHP短标记,则需要执行<?php echo $r['var1'] ?>

最后,您可以尝试添加gzip压缩。最好在服务器级别完成,但在PHP中,您可以在ob_start("ob_gzhandler");之后立即添加行<?php作为PHP代码的第一行。

如果这仍然无济于事,那么您的表格太大就是一个简单的事实。使用分页或过滤以减小尺寸会更好。

答案 1 :(得分:2)

PHP不是你的瓶颈。这是一个presentation,我参加了创建PHP的Rasmus Lerdorf的PHP性能。 PHP是您在性能方面最不得不担心的事情之一。您可以打印数百万行条目并执行复杂的计算而不会出现问题。在将它扔给PHP之前,请检查您的代码,查询,网络服务器设置。

正如Mark建议您可以使用flush将输出发送到浏览器,同时仍然可以从db获取信息。