Может ли кто-нибудь дать мне краткий обзор того, как используются ресурсы памяти?Я знаю, что могу увеличить ограничение памяти PHP в PHP.ini, а также с помощью строк кода, таких как:
ini_set("memory_limit","24M");
У меня есть сценарий загрузки изображений, который я пишу, использующий довольно симпатичныйклассный PHP-скрипт с названием simpleImage, который можно найти здесь: http://www.white -hat-web-design.co.uk / Articles / php-image-resizing.php
У меня есть основныеформа, которая принимает JPG и PNG.Я установил свой предел памяти PHP на 24 м, думая, что это будет достаточно высоко, но когда я попытался загрузить 3-мегабайтное изображение, я все равно получил красивую исчерпанную ошибку выделения памяти.Повышение значения до 240M и сценарий работает нормально (локально).
Мой сценарий делает это:1) Принимает загруженное изображение TMP2) Запускает getimagesize () на изображении, чтобы убедиться, что это действительное изображение.3) Перемещает временное изображение в конечный каталог назначения.4) Загружает изображение, используя простое изображение.5) Изменение размера изображения с помощью простого изображения.6) Сохраняет изображение с измененным размером, используя простой скрипт изображения.
Так что я предполагаю, что вся загрузка / проверка / изменение размера требует чуть больше, чем 24M.Но я беспокоюсь о том, каким будет приемлемое ограничение памяти.Я хотел бы, чтобы пользователи могли загружать изображения размером ~ 6 МБ.Это будет чрезвычайно напряженно на ваших средних выделенных серверах?
Вот суть моего сценария ... лично я не думаю, что он чрезмерно расточителен для ресурсов ??
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);
}
}
}