memory_limit не работает на некоторых конфигурациях

camka

не самка
memory_limit не работает на некоторых конфигурациях

Нижеследующий скрипт не выделяет достаточного количество памяти под данные. В php.ini прописан лимит в 100М. Для уверенности ставлю значение и в коде скрипта. Проблема в том, что пхп (или кто-то еще) не позволяет скрипту выделить больше чем 8-16МБ памяти. Подобное поведение наблюдается на нескольких одинакого сконфигурированных машинах. Последний снэпшот проблему не вылечил. На других машинах работает, как полагается: выделяет память, пока не упрется в лимит.

Писал в багрепорт, но случайно наврал, что проблема наблюдается только на одной машине, чем вызвал изменение статуса багрепорта на Bogus. Теперь вот никак не могу дождаться от них ответа. А решение желательно срочно. Вот в надежде, что знающие люди с этого форума смогут подсобить советом, и запостил тему.


PHP:
<?php
    echo ini_get('memory_limit'),"\n";
    ini_set('memory_limit', 100000000);
    echo ini_get('memory_limit'),"\n";
    ini_set('display_errors', 1);
    ini_set('error_reporting', E_ALL);
    function a()
    {
        echo 'fck oyu!';
    }
    register_shutdown_function('a');
    $zz = 'u';
    for($i=1; $i<1000; $i++)
    {
        $zz .= $zz;
        echo $i,' - ',  memory_get_usage(),"<br>\n";flush();
    }

?>
Код:
100M
100000000
1 - 12912<br>
2 - 12912<br>
3 - 12920<br>
4 - 12944<br>
5 - 12960<br>
6 - 13032<br>
7 - 13096<br>
8 - 13224<br>
9 - 13480<br>
10 - 13992<br>
11 - 15016<br>
12 - 17064<br>
13 - 21160<br>
14 - 29352<br>
15 - 45736<br>
16 - 78504<br>
17 - 144040<br>
18 - 275112<br>
19 - 537256<br>
20 - 1061544<br>
21 - 2110120<br>
22 - 4207272<br>
23 - 8401576<br>

error_log:
FATAL:  erealloc():  Unable to allocate 16777217 bytes
Конфигурация ПХП:

'./configure' '--bindir=/usr/bin' '--mandir=/usr/share/man'
'--with-apache=../apache_1.3.33' '--with-config-file-path=/etc/apache'
'--with-gnu-ld' '--without-pear' '--enable-track-vars'
'--enable-memory-limit' '--enable-short-tags'
'--enable-inline-optimization' '--disable-display-source'
'--disable-url-fopen-wrapper' '--disable-cli' '--disable-posix'
'--with-pcre-regex' '--disable-ctype' '--disable-overload'
'--disable-tokenizer' '--disable-ipv6' '--disable-simplexml'
'--without-sqlite' '--with-mysql=/usr' '--disable-session'
'--enable-sockets' '--without-zlib' '--with-iconv'
'--enable-mbstring=all' '--enable-mbregex'

Софт:
- fedora-release-2-4
- gcc-3.3.3-7
- binutils-2.15.90.0.3-5
 

tony2001

TeaM PHPClub
1) проверь, что ты используешь тот php.ini
2) собери без --enable-memory-limit ?

-~{}~ 21.03.05 14:10:

P.S. это что, их сборка какая-то?
как могут '--disable-overload' и '--disable-simplexml' вместе указаны?
overload - php4 only, simplexml - php5 only.
 

camka

не самка
1) Использую тот. Из первой строки вывода видно что значение - 100M.
2) Проблема как раз-таки и возникла без оной. Перекомпилили с ней - проблема осталась.

-~{}~ 21.03.05 13:27:

ps) а это может повлиять? Админом так было собрано. Версия - 4. Я полагаю, это не должно никак влиять на мою проблему. Или все же я неправ?
 

tony2001

TeaM PHPClub
ну, значит, админ криво собирал.
при отсутствии memory_limit никаких лимитов быть не должно.
если все равно есть ошибка, значит это лимиты ваших систем.
 

camka

не самка
А можно поподробнее: какие лимиты системы могут влиять на это?
 
Сверху