|
|
|
| Есть такой скрипт:
<?
header('Content-Type: image/gif');
$img = imagecreatefromgif ('pic/hp_empty.gif');
$img_2 = imagecreatefromgif ('pic/hp_ok.gif');
$hp = 500;
$hp_now = 250;
$hp_k=round($hp_now*100/$hp,2);
$kol=round(128*$hp_k/100);
imagecopyresampled ($img, $img_2, 0, 0, 0, 0, $kol, 12, 12, 12);
$white = imagecolorallocate($img, 255, 255, 255);
imagestring($img, 1, 40, 2, "$hp_now/$hp", $white);
imagestring($img, 1, 3, 2, "HP", $white);
imagegif($img);
?>
|
Данный скрипт потребляет от 1 до 5 процентов CPU. Жалуется хостер.
Действительно ли он может грузить так?
И как его оптимизировать можно? | |
|
|
|
|
|
|
|
для: FileTimeout
(08.07.2008 в 18:09)
| | >imagecopyresampled ($img, $img_2, 0, 0, 0, 0, $kol, 12, 12, 12);
>imagegif($img);
>Действительно ли он может грузить так?
Что Вас удивляет?
>И как его оптимизировать можно?
Сохранять построенные картинки на диск, а не строить на лету. | |
|
|
|
|
|
|
|
для: Trianon
(08.07.2008 в 23:37)
| | Данные постоянно изменяются, генерируется полоса HP в игре... Кешировать думаю никак не получится. :( | |
|
|
|
|
|
|
|
для: FileTimeout
(09.07.2008 в 00:20)
| | Полосу HP нафиг не срослось лепить ни на какую картинку.
Для неё не нужно вообще изображений создавать. | |
|
|
|
|
|
|
|
для: Trianon
(09.07.2008 в 00:35)
| | Хочется, чтобы была не однотонная :) Поэтому и леплю... Рисовать не очень умею с помощью PHP. | |
|
|
|
|
|
|
|
для: FileTimeout
(09.07.2008 в 01:10)
| | Сделал сейчас одну картинку, полностью кодом генерируется отдается клиенту и потом удаляется. Посмотрим как с нагрузкой будет. Спасибо за совет!
P.S. Думал процессор жрать будет меньше когда уже готовые склеиваем... А тут вон как говорите. Да и код по весу значительно увеличился :) Еще раз спасибо за совет. | |
|
|
|
|
|
|
|
для: FileTimeout
(09.07.2008 в 03:32)
| | Все сделал и встроил, по прежнему жрет CPU. Даже еще больше...
Не подскажите, что еще можно сделать? | |
|
|
|
|
|
|
|
для: FileTimeout
(09.07.2008 в 03:55)
| | Вы, для начала, удаляйте открытые дескрипторы... | |
|
|
|
|
|
|
|
для: sim5
(09.07.2008 в 04:23)
| | Если вы, про imagedestroy($img); то сейчас это сделал.
Если про что-то другое, то подробней объясните... | |
|
|
|
|
|
|
|
для: FileTimeout
(09.07.2008 в 04:47)
| | Именно это. Вы же не в никуда открываете изображение, а банально отображая их на память, и после работы ее нужно освобождать. Пока не было проблем, например, при загрузках изображения на сервер, производить операции с ним (допустим наложение логотипа). Что может быть у вас проблемой... | |
|
|
|