2014-09-25 53 views
-1

使用PHP和GD - 什么是性能或时间之间更好地执行:服务器PHP GD - 输出和保存之间的性能/时间差

输出图象

header('Content-Type: image/png'); 
imagepng($image); 

或保存图像(要么本地服务器或Amazon S3)

imagepng($image, 'new_image.png'); 
+0

表现为甚么?这是否会提供给多个用户?在这种情况下,保存到文件,所以你不会浪费多年的CPU时间重复同一张图片。它只会被看到过吗?然后直接发送,发送到s3或写入磁盘将浪费时间,之后再将其删除。 – 2014-09-25 21:57:39

+0

它将被服务于许多客户,所以是的,它会一再重复 – 2014-09-25 22:00:03

回答

0

好,都会有它需要生成图像数据的时候没有任何区别,因为它会在两种情况下是相同的。

但是,将映像保存到本地磁盘时,操作可能会比数据必须发送到世界某个地方的客户端浏览器时快得多。

但是,PHP的重点是在浏览器中显示某些内容,所以我猜你会显示存储的文件,从存储图像中获得的速度无益。所以,如果你想在两种情况下都显示图像,我想直接从PHP脚本输出图像会更好。

另一方面,如果您多次使用该映像,则应保存该映像,并使用保存的版本,因为生成映像本身需要花费时间在PHP中。

如果你想生成一次,并多次使用,你可以使用这段PHP代码:

<?php 
// this is where it is stored 
$filename = 'my_image.png'; 

// test if file exists 
if (!file_exists($filename)) 
{ 
    // if does not exist, make it 
    <... your code for making the image ...> 
    // store to disk 
    imagepng($image,$filename); 
    // image is not needed anymore 
    imagedestroy($image); 
} 

// header 
header('Content-Type: image/png'); 
// get file from the disk 
readfile($filename); 
?> 

只需从磁盘上删除图像,如果你已经改变了它,你要重新生成它。这是一个非常基本的例子,你可以根据你的需要来构建它。

+0

谢谢。是的,图像将被多次提供。但是就像你说我会在两种情况下都会显示图像,所以我想最好多花点时间第一次生成它? – 2014-09-25 22:26:16

+0

好的,如果你不生成它,它将不存在。一旦存在,您可以直接从磁盘提供文件。我会在我的答案中添加一些PHP代码。 – 2014-09-25 22:32:12