2014-09-25 26 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

相關問題