Скрипт померает когда засыпает

Discussion in 'PHP' started by opticaltoxin, 16 May 2010.

  1. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    на php делаю sleep(10*60) на 10 мин
    на одних хостингах после выхода из сна скрипт продолжает работать, а на других он так и не продолжает работать
    подозреваю здесь дело в настройках apacha, как нить это можно обойти?
    или в чем еще может быть дело?
     
  2. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    apache тут непричем
    дело в настройках php.ini
    должно быть
    max_execution_time = 0
    а там везде
    max_execution_time = 30
    и больше 30 сек скрипт работать не будет
     
    1 person likes this.
  3. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    вроде функция sleep на подсчет времени работы скрипта не влияет
     
  4. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Какую ошибку выдает при отваливании ?
     
  5. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    не знаю, хостинг не мой
    в настройках апача есть timeout но он для соединений:
    - The total amount of time it takes to receive a GET request.
    - The amount of time between receipt of TCP packets on a POST or PUT request.
    - The amount of time between ACKs on transmissions of TCP packets in responses.

    время работы скрипта не видно
     
    #5 opticaltoxin, 16 May 2010
    Last edited: 16 May 2010
  6. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    не в конфигах апача а в конфиге php.

    <?php phpinfo(); ?>

    max_execution_time = ?
    max_input_time =?
    memory_limit = ?
     
  7. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Настройки на чужом сервере:
    max_execution_time = 30 - при таких настройках на моем сервере скрипт работает нормально после sleep'а
    max_input_time = 60

    memory_limit = 64 - каким образом объем памяти влияет на время работы скрипта?
     
  8. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Хм... Какой таймаут у апача, у сервака на котором все окей пашет?
    Дело в том что если сервак рвет соединение то скрипт тоже завершится ибо результаты то отдавать некому будет.

    есть в PHP параметр , что-то типо IgnoreUserAborted (или как-то так), если рвется соединение или ты нажал крестик в браузере то скрипт плюет на это, но вот не знаю толи в скрипте это прописывается толи в конфиге.

    ОЗУ это все!

    З.Ы. Я не знаток PHP и поэтому мои ответы не есть достоверными на все 100% а являются моими рассуждениями, основанными на тех знаниях что все-же есть.
     
    #8 POS_troi, 16 May 2010
    Last edited: 16 May 2010
  9. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    на моем сервере в httpd.conf и инклудах не нашел параметра timeout, видимо он выставляеца по дефолту если не прописан

    у меня стоит в скрипте: ignore_user_abort(true);
    по-идее после разрыва соединения скрипт должен продолжать работать
     
  10. emmy

    emmy Member

    Joined:
    12 Oct 2009
    Messages:
    76
    Likes Received:
    17
    Reputations:
    8
    Винда?
     
  11. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Не венда
    только что закончил работать тестовый скрипт:
    <?php

    echo "Test 3";
    ignore_user_abort(true);
    sleep(2*60*60);

    $Test = fopen('test.ok','w');
    fclose($Test);

    ?>

    после двух часов сна он проснулсо и создал файл при настройках которые я указывал выше
     
  12. Failure

    Failure Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    если такие временные промежутки то не разумней ли, было бы юзать crontab? (или at под виндой)
     
  13. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    нельзя по религиозным соображениям
     
  14. opticaltoxin

    opticaltoxin New Member

    Joined:
    12 May 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Протестил этот скрипт на том хостинге - файл не создалсо
    Так кто-нить знает причину того что кто то убивает скрипт,
    может быть из-за того что там PHP as CGI и какой-то процесс мониторит то. что процесс PHP долго сидит в памяти и из-за этого его прибивает?