Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Определить размер памяти, занимаемой PHP-скриптом
 
 автор: trix   (28.02.2008 в 17:25)   письмо автору
 
 

А, как можно определить размер памяти занимаемой какой либо функцией при ее выполнении?

Хостер ограничивает размер выделеной памяти 16мб, и мне не хватает, вот хочу понять сколько жрет функция и как бы уменьшить размер сжираемой памяти.
Вот сама функция, может подскажите как размер используемой памяти уменьшить и как определить сколько вообще функция памяти жрет?

function resizeimg($filename,$Dir_gallery, $name,$w, $h)
{

// получим размеры исходного изображения
$size_img = getimagesize($filename);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];


if ($w == "")
{
$w = $src_ratio*$h;
$w = intval($w);
}

if ($h == "")
{
$h = $w/$src_ratio;
$h = intval($h);
}

// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// зальём его белым цветом
imagefill($dest_img, 0, 0, 0xFFFFFF);

// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;


// здесь вычисляем размеры, чтобы при масштабировании сохранились
// 1. Пропорции исходного изображения
// 2. Исходное изображение полностью помещалось на маленькой копии
// (не обрезалось)
if ($src_ratio>$ratio)
{
$old_h=$size_img[1];
$size_img[1]=floor($size_img[0]/$ratio);
$old_h=floor($old_h*$h/$size_img[1]);
}
else
{
$old_w=$size_img[0];
$size_img[0]=floor($size_img[1]*$ratio);
$old_w=floor($old_w*$w/$size_img[0]);
}

// исходя из того какой тип имеет изображение
// выбираем функцию создания
switch ($size_img['mime'])
{
// если тип файла JPEG
case 'image/jpeg':
// создаем jpeg из файла
$src_img = imagecreatefromjpeg($filename);
$ext="jpg";
break;
// если тип файла GIF
case 'image/gif':
// создаем gif из файла
$src_img = imagecreatefromgif($filename);
$ext="gif";
break;
}
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);

// в зависимости от типа файла выбирвем функцию сохранения в файл
switch ($size_img['mime'])
{
case 'image/jpeg':
// сохраняем в файл small.jpg
imagejpeg($dest_img, "$Dir_gallery/$name.$ext");
break;
case 'image/gif':
// сохраняем в файл small.gif
imagegif($dest_img, "$Dir_gallery/$name.$ext");
break;
}

// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
}

   
 
 автор: cheops   (28.02.2008 в 17:43)   письмо автору
 
   для: trix   (28.02.2008 в 17:25)
 

Возможно вас заинтересует функция memory_get_usage().

   
 
 автор: trix   (28.02.2008 в 18:28)   письмо автору
 
   для: cheops   (28.02.2008 в 17:43)
 

Спасибо полезная функция.
Оказывается немеряно забирает памяти функция:

imagecreatefromjpeg();

Не подскажите может есть аналог, с меньшим потреблением? Или можно что-то придумать чтобы она так память не забирала!

   
 
 автор: mihdan   (28.02.2008 в 18:45)   письмо автору
 
   для: trix   (28.02.2008 в 18:28)
 

Неправильно используете! И не забывайте чистить память после ее использования!

   
 
 автор: trix   (28.02.2008 в 18:47)   письмо автору
 
   для: mihdan   (28.02.2008 в 18:45)
 

:) Так а, как правильно ?

   
 
 автор: kasmanaft   (29.02.2008 в 06:44)   письмо автору
 
   для: trix   (28.02.2008 в 18:47)
 

Ну, кушает, наверно, столько, сколько весит файл ;)

PS как правильно - не знаю)). Может быть и я неправильно использовал :rolleyes:

   
 
 автор: trix   (29.02.2008 в 11:16)   письмо автору
 
   для: kasmanaft   (29.02.2008 в 06:44)
 

Угу, только не сколько весит, а в зависимости от разрешения файла. Если больше 1000 то около 5мб берет, а на картинку 2500х3500 судя по всему все 16мб сжирает и скрипт не выполняется :(

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования