如何使用PHP将大图像输出到浏览器?

时间:2011-03-29 09:14:03

标签: php image plot gd large-data

我有一个非常大的图像,使用PHP动态生成并输出到浏览器。 (宽5000像素,高1000-2000像素。这是我网站上每日用户活动的情节。)

问题在于,现在情节太大而且PHP脚本给出了内存耗尽的错误(生成的PNG本身很难实现),而且由于这个原因我无法获得图像。

是否可以使用PNG格式的GD以某种方式输出多个部分的大图像?

(ps:我运行网站的主机使用安全模式,所以我无法修改配置,我认为他们正在使用默认的PHP安装。)

EDIT1:这是一个管理员脚本。没有用户看到它除了我。

EDIT2:示例图片可以在这里看到:http://users.atw.hu/calmarius/trash/wtfb2/x.png (我也可以选择按IP地址对曲目进行分组。)

每个用户+ IP对都有自己的24小时曲目。每个绿色标记表示用户活动。如您所见,此图像可以逐轨输出。并且没有必要一次输出和生成整个事物。

这个网站将是一个在线策略游戏,我希望将来使用这个图表来更容易地检测多帐户。 (试图通过注册多个账户来获得优势的用户只有那些只有1的账户。)但这是一个不同的问题。

我正在使用PHP脚本,因为我懒得从数据库中导出请求日志,下载它并将数据提供给一个可以为我制作情节的程序。 ;)

2 个答案:

答案 0 :(得分:2)

在处理图像之前将内存限制设置为无限制。

ini_set('memory_limit', '-1');

答案 1 :(得分:0)

有助于说明你是如何生成图像的(GD库,ImageMagick)以及如何输出它。您是将文件保存到目录然后使用readfile()输出吗?如果是,则fopen / fread / echo组合比使用readfile()将文件输出到浏览器快约50%-60%。你在使用gzip压缩吗? php执行的时间限制是多少?你得到的确切错误信息是什么?