Fatal error: Out of memory allocated ...

Тема в разделе "PHP", создана пользователем doxx, 7 авг 2011.

Модераторы: latteo
  1. doxx

    doxx |||llll|||||llll|||

    Регистр.:
    18 фев 2009
    Сообщения:
    1.058
    Симпатии:
    212
    Проблема, выдает что-то типа такой ошибки
    Fatal error: Out of memory (allocated 3145728)...
    Скрипт элементарный, отправляет веб запросы, с некоторыми паузами( sleep )
    задан на постоянное выполнение циклом while,
    даже никакого парсинга нет,
    после 3-5 прохождений, скрипт начинает долго-долго думать, не выполняется, и в итоге вываливается такая ошибка...
    WinXP
    гуглил это ошибку, но ничего толком не нашёл,
    Установлен денвер, скрипт кидался в туже папку с интерпретатором пхп .. (C:\WebServers\usr\bin), запускался через cmd

    Так же стоит AppServ ( может как-то конфликтуют? )
    Везде где можно в php ini в memory прописывал и 128 и 512 мб и 1024
    результат тот же..
    Как быть?
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    634
    Симпатии:
    1.407
    Покажите скрипт.
    Без него трудно говорить о чем-то.
    Есть вероятность что у вас бажная версия апача, возможно что в системе что-то жрет ресурсы, возможно скрипт съедает все...
    Слишком много всяких возможно.
     
  3. doxx

    doxx |||llll|||||llll|||

    Регистр.:
    18 фев 2009
    Сообщения:
    1.058
    Симпатии:
    212
    скрипт такого такой:
    Код:
    <?php
    set_time_limit(0);
    
    sleep(10);
    
    while(true) { 
    //
    file_get_contents('');
    echo ' ';
    
    sleep(10);
    
    file_get_contents('');
    echo ' ';
    
    sleep(10);
    
    file_get_contents('');
    echo ' ';
    
    sleep(10);
    
    file_get_contents('');
    echo ' ';
    
    sleep(10);
    
    }
    ?> 
    
    и всё.. кажись методом тыка понял в чем проблема была,
    в урле генерируется случайно число, и в некоторых случаях при веб запросе начинается подгружаться большой объем информации, через браузер даже страница в этом случае не грузится, значок часов, с ожиданием когда все данные вылезут...
    Вот походу file_get_contents ждет пока весь тип данных загрузится, а т.к. это неизвестно когда произойдет, перегружается память видимо...

    Как бы сделать чтобы отправлялся веб-запрос , и не ждать полной отдачи от этого запроса? Чтоб перегрузки не было.. Ну или ждать 5 секунд, например..
     
  4. -=BlackSmoke=-

    -=BlackSmoke=-

    Регистр.:
    4 авг 2009
    Сообщения:
    280
    Симпатии:
    49
    в file_get_contents можно задать максимальный размер принимаемых данных, по достижении которого чтение будет остановлено.
    что-то вроде
     
    doxx нравится это.