任何人都可以給我一個快速入門如何使用內存資源?我知道我可以起來在php.ini以及代碼行,如PHP內存限制:PHP內存限制
ini_set("memory_limit","24M");
我有我寫的是正在使用一個很酷的PHP的圖片上傳腳本腳本叫simpleImage可以在這裏找到:http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
我有一個基本的形式,接受JPG和PNGs。我已經將我的PHP內存限制設置爲24米,認爲這會足夠高,但是當我嘗試上傳3mb圖像時,我仍然收到美麗的內存分配耗盡錯誤。將價值提高到240M,腳本運行良好(本地)。
我的腳本做到這一點:
1)接受的TMP圖片被上傳
2)運行和getimagesize()在圖像上,以檢查它是否是一個有效的圖像。
3)將臨時圖像移動到最終的目標目錄。
4)使用簡單圖像加載圖像。
5)使用簡單圖像調整圖像大小。
6)使用簡單的圖像腳本保存調整大小的圖像。
所以我想所有的加載/檢查/調整大小需要比24M多一點。但我擔心可以接受的內存限制分配是多少。我希望用戶能夠舒適地上傳〜6MB圖像。這對您的普通專用服務器來說會非常緊張嗎?
這是我的腳本的主旨..我個人認爲它不是過度浪費資源?
if (!empty($_FILES)) {
// get image
ini_set("memory_limit","24M");
require_once('simpleImage.php');
require_once('db.php');
$tempFile = $_FILES['file']['tmp_name'];
$originalFile = $_FILES['file']['name'];
$extension = strtolower(end(explode(".", $originalFile)));
$targetFile = "path/to/directory/";
// validate image
$validExtensions = array('jpg', 'jpeg', 'png');
if(in_array($extension, $validExtensions)) {
$validExtension = true;
} else {
$validExtension = false;
}
if(getimagesize($tempFile) == false) {
$validImage = false;
} else {
$validImage = true;
}
if($validExtension == true && $validImage == true) {
if(move_uploaded_file($tempFile,$targetFile)) {
$image = new SimpleImage();
$image->load($targetFile);
$image->resizeToWidth(500);
$image->save($targetFile);
}
}
}
上面寫的simpleimage類使用GD,這是用php進行圖像處理的事實標準。 ImageMagick可能更高效,但它不包含在像GD這樣的php包中。 – 2011-04-22 18:37:22