任何人都可以给我一个快速入门如何使用内存资源?我知道我可以起来在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