X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Оптимизировать работу Imagick
BoL4oNoK
BoL4oNoK
Topic Starter сообщение 13.8.2012, 13:45; Ответить: BoL4oNoK
Сообщение #1


Добрый день. Такая проблема. Есть скрипт:
[PHP]
$_TITLE = $this->filter($this->GetParams("gal_title"));
$_KEYS = $this->filter($this->GetParams("gal_keys"));
$_DESC = $this->GetParams("gal_desc");
$_FILE = $this->GetParams("gal_file");
$_ID = intval($this->GetParams("gal_id"));
$_UID = intval($this->GetParams("ul_id"));
//$_GID = intval($this->GetParams("gc_id"));

$_ROOT_PATH = CONFIG::getInst()->getINI("server", "site", "");
$_home = $_ROOT_PATH."/gallery/files";
$_source = "$_home/full/$_FILE";
$_source = str_replace("/", DIR_SEP, $_source);
$_dest = "$_home/prev/$_FILE";
$_dest = str_replace("/", DIR_SEP, $_dest);
if (!file_exists($_dest)) {
$_IMG = new IMAGES($_source, $_dest);
$_IMG->resize(150, 150);
}
if (!is_null($_TITLE))
$_SET[] = "`gl_title`='$_TITLE'";
if (!is_null($_KEYS))
$_SET[] = "`gl_keys`='$_KEYS'";
if (!is_null($_DESC))
$_SET[] = "`gl_desc`='$_DESC'";
if ($_UID > 0)
$_SET[] = "`ul_id`=$_UID";
$_RES = $this->DB->update($_SET, "gal_list", "`gl_id`=$_ID");

$this->checkTags($_KEYS, "gal_tags");
$this->bsmMESSAGE("Материал галереи №$_ID сохранен.");
$_ID++;
$this->Redirect("/gallery/view?id=$_ID");
}
[/PHP]

Класс IMAGES:
[PHP]
final class IMAGES {
protected $image; // Image
protected $file; // Image
protected $dest; // Image
protected $imagick; // IMagick
protected $preview; // Preview
protected $width; // Image width
protected $height; // Image height
protected $type; // JPG|GIF|PNG

private function getType($_image) {
$mime = mime_content_type($_image);
switch ($mime) {
case 'image/jpeg':
$this->type = "jpg";
return true;
break;
case 'image/png':
$this->type = "png";
return true;
break;
case 'image/gif':
$this->type = "gif";
return true;
break;
default:
return false;
break;
}
}

private function openImg($_image) {
switch ($this->type) {
case 'jpg':
$this->image = imagecreatefromjpeg($_image);
break;
case 'png':
$this->image = imagecreatefrompng($_image);
break;
case 'gif':
$this->image = imagecreatefromgif($_image);
break;
default :
$_SESSION['core_msg'] = "Файл не является изображением";
break;
}
//var_dump($this->image);
}

public function __construct($_image, $_dest) {
if (!$this->getType($_image)) {
return false;
}
$this->file = $_image;
$this->openImg($_image);
$this->width = imagesx($this->image);
$this->height = imagesy($this->image);
$this->dest = $_dest;

}

public function resize($_width = 0, $_height = 0) {
if (!is_numeric($_width) || !is_numeric($_height)) {
return false;
}
if ($this->type == "gif") {
$_IMG = new Imagick($this->file);
$i = 0;
foreach ($_IMG as $_frame) {
$_frame->thumbnailimage($_width, $_height);
$_frame->setimagepage($_width, $_height, 0, 0);
$i++;
}
//var_dump($this->file, $this->dest, $i);
$_IMG->writeimages($this->dest, true);
$_IMG->clear();


}
}

}
[/PHP]

ПРоблема в том, что в ограничение 30 секунд на выполнение скрипт не укладывается. Изображение создается, но времени, похоже, немного не хватает. Можно ли как-то скрипт IMAGES оптимизировать, чтобы время выполнения уменьшить?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Witu
Witu
сообщение 13.8.2012, 13:58; Ответить: Witu
Сообщение #2


смотрите где тормозит
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
BoL4oNoK
BoL4oNoK
Topic Starter сообщение 13.8.2012, 14:02; Ответить: BoL4oNoK
Сообщение #3


А как можете подсказать? Мне кажется, что много вмереми уходит на создание превью:
[PHP]
if (!file_exists($_dest)) {
$_IMG = new IMAGES($_source, $_dest);
$_IMG->resize(150, 150);
}
[/PHP]

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
20 uahomka 3327 Сегодня, 11:54
автор: Skyworker
Открытая тема (нет новых ответов) "Извините, что ожидание затянулось, но не думайте, пожалуйста, что мы про вас забыли. Мы заводим задачи по всем обращениям и контролируем работу над ними самым тщательным образом."
Вопрос
0 kuz999 1245 5.2.2024, 14:06
автор: kuz999
Горячая тема (нет новых ответов) ВНИМАНИЕ: Хочешь начать работу с фармой? Легко! StimulCash.com!
67 StimulCash 195607 18.12.2023, 12:13
автор: Crimean
Открытая тема (нет новых ответов) Ищу работу
4 skylar 1783 29.11.2023, 6:18
автор: Maximimizar
Открытая тема (нет новых ответов) Ищу работу: контент, копирайтинг, сайты, соцсети
сдельно или на постоянку
11 iCrew 4718 26.5.2023, 19:07
автор: Kul


 



RSS Текстовая версия Сейчас: 23.4.2024, 12:14
Дизайн