Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674

Как снять лимит в GD PHP?

10.06.2013, 13:43. Показов 1164. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую Всех форумчан!

Тема названа по догатке дого, что для графической библиотеки GD установлены лимиты на выполнение определённого количества её функций. Дело в том, что создаётся большое изображение, более 4000 в ширину и 2000 в высоту, и на нем рисуется сетка. Дело в том что если увеличить количество фрагментов сетки, то изображение перестаёт генерироваться, и браузер выводит "Изображение".

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
session_start();
ini_set("memory_limit","128M");
 
$SIZE = 128;
$M_WIDTH = 32*2;
$M_HEIGHT = 18*2;
 
$WIDTH = $M_WIDTH*$SIZE;
$HEIGHT = $M_HEIGHT*$SIZE;
 
header("Content-Type: image/png");
 
$image = imagecreatetruecolor($WIDTH,$HEIGHT);
imagefill($image,0,0,0);
 
$white = imagecolorallocate($image,255,255,255);
$red = imagecolorallocate($image,200,40,40);
$green = imagecolorallocate($image,40,200,40);
$blue = imagecolorallocate($image,40,40,200);
$yellow = imagecolorallocate($image,200,200,40);
 
imagettftext($image,16,5,2,30,imagecolorallocate($image,255,255,255),"Arial.ttf",strtotime('now'));
 
$CENTER_X = $WIDTH/2;
$CENTER_Y = $HEIGHT/2;
 
for($i = 0, $a = 1, $c = 1, $x = $CENTER_X, $y = $SIZE*2, $nx = 1, $ny = 1; $y <= $HEIGHT-$SIZE; $i+=$a)
{
    while($x <= $CENTER_X+$SIZE*$i)
    {
        if($c == count($colors)-1) $c = 1;
        else $c++;
        
        $points = array($x,$y+$SIZE/2,$x-$SIZE,$y,$x,$y-$SIZE/2,$x+$SIZE,$y);
        
        imagepolygon($image,$points,4,$green);
        
        $x+=$SIZE*2;
        $nx++;
    }
    
    if($x > $CENTER_X-$SIZE*$i-$SIZE)
    {
        if($CENTER_X-$SIZE*($i+1) <= 0) $a = -1;
        $x = $CENTER_X-$SIZE*($i+$a);
        $y+=$SIZE/2;
        $nx = 1;
    }
    
    $ny+=2;
}
 
imagepng($image);
?>
В самом начале кода Вы скорее всего заметили, что константа memory_limit увеличена на 128, эту константу я увеличивал на 1ГБ, и эффекта никакого!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2013, 13:43
Ответы с готовыми решениями:

как увеличить лимит передаваемых файлов в php?
Вопрос написан в заголовке.

Как обозначить лимит размера дива по количеству в PHP?
Здравствуйте. Есть PHP, в нём див, который расширяется в зависимости от его наполненности. Наполняется он другими подключеными PHP...

php - Как снять ограничение по времение 9999 секунд?
Если ставлю больше, то скрипт все равно останавливается на 9999

6
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.06.2013, 17:15
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
В самом начале кода Вы скорее всего заметили, что константа memory_limit увеличена на 128, эту константу я увеличивал на 1ГБ, и эффекта никакого!
Если хостер установил Masted value в X, то Вы уже никак не сможете его переопределить в Y.

Да и потом, memory_limit=1G в рамках web-сервера - то самый настоящий эгоизм в лице отдельного потока (умножить на количество потоков). Сервер подумает «ишь чё захотели» и пожалуется хозяину.
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
10.06.2013, 18:21  [ТС]
Vovan-VE, сервер на локальной машине.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
11.06.2013, 16:16
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
сервер на локальной машине.
Да хоть в Африке. Все равно Web-сервер. Много клиентов - много потоков. 1G * количество потоков.
0
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
11.06.2013, 20:24  [ТС]
Vovan-VE, вопрос не месте нахождения, а о неком "лимите", картнка генерируется не 1000 раз в секунду, а примерно в 1н час
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.06.2013, 10:19
Цитата Сообщение от Maksimchikfull Посмотреть сообщение
картнка генерируется не 1000 раз в секунду, а примерно в 1н час
Запускайте его по крону. Там, за пределами web-сервера, он сам себе хозяин - сколько захотел, столько и установил в limit.
PHP
1
2
3
#!/usr/bin/php -d memory_limit=1G
<?php
// ...
Bash
1
$ ./script.php
1
Веб-мастер
 Аватар для Maksimchikfull
89 / 89 / 19
Регистрация: 11.08.2011
Сообщений: 674
14.06.2013, 17:43  [ТС]
Vovan-VE, всё гуд. Но на хостинге лимит 64М

И при установке этого лимита у себя на локале встретил одну самую неожиданную вещь:

Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 35651584 bytes) in C:\WAMP\www\image\generator.php on line 1

Факт!

245728 : {main}( ) ..\generator.php:0
246624 : imagecreatefrompng ( ) ..\generator.php:1
Это фатальная ошибка, а вот и весь код:
PHP
1
<?php $img = imagecreatefrompng("bgs/bg{$_GET[id]}.png"); ?>
Размер открываемого изображения состпвляет - 4*783*281 байт

С каких пор ф-я imagecreatefrompng берет больше памяти чем весит файл, и почему фатальная ошибка если вызвана всего одна функция?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2013, 17:43
Помогаю со студенческими работами здесь

Лимит sql php - вывод записей порционно
Имеется таблица freinds: id, my_id, freind_id, status. Как выводить не всех, а по 10 друзей? Со смещением.

Как снять магнит тахогенератора?, СМА Whirlpool AWE6377, как снять магнит?
С.М.А. Вирпул AWE6377 859363710070 34071003710. Подскажите как снять магнит тахогенератора. ...

Как увеличить лимит на количество символов в консоли
Использую консоль для вывода информации В определенный момент старая информация затираеться Можно как то увеличить лимит на количество...

Как задать лимит выборки в базе sdf
Что-то типа этого, не работает: SELECT * FROM MyTable ORDER BY UID DESC LIMIT 10, 50 Возможно ли в базе SDF выбрать записи с ......

Asrock k8nf4g. лимит на озу=2г!? как расширить?
asrock k8nf4g sata2 7** сокет... лимит на озу=2г!? как расширить?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru