За последние 24 часа нас посетил 59261 программист и 1771 робот. Сейчас ищут 1203 программиста ...

крон и отлов ошибок

Тема в разделе "PHP для новичков", создана пользователем vikrorpert, 9 апр 2012.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    запускаю скрипт по крону, шаред хостинг
    команда /usr/local/bin/php /home2/k/public_html/1.php

    скрипт тяжелый, иногда он не выполняется до конца. как можно его отладить, или посмотреть какие ошибки?
    запихнул весь код в try\catch но catch не отрабатывает
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Засекаешь секундомер в начале скрипта и определяешь, сколько времени сервер отводит скрипту на выполнение. Дальше на каждой итерации сверяешься с таймером и если момент, когда PHP завершит работу скрипта уже на подходе - завершаешь его работу сам, сохранив, до какого места скрипт доработал. При последующих запусках скрипта - начинаешь с того же места и продолжаешь обработку данных. Также само, с секундомером. При завершении - опять записываешь, до куда скрипт дошёл. Ну и так по кругу, пока все данные не обработаешь.
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    увеличить время не проблема
    но не думаю что изза этого
    скрипт иногда выполняется целиком нормально, а иногда не выполняется

    наверно же выдает ошибку -как ее отловить чтобы потом посмотреть?
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Ну попробуй запустить скрипт из браузера - если есть ошибки и включено их отображение - то увидешь их. Если выключено - то либо включи его либо смотри последние записи в файле error_log
     
  5. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    в том и дело что скрипт не всегда валится
    крон же пишет куда то вывод страницы, где бы это глянуть
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    По идее, крону можно указать, куда направлять вывод страницы и я думаю, что можно направить его в файл. Но я никогда этим не заморачивался, по этому не знаю, что там нужно написать для этого. Можешь посмотреть статьи какие в интернете про крон, наверняка где-нибудь об этом упоминается. Ну или дождаться пока прийдёт кто-нибудь кто знает и подскажет.

    Добавлено спустя 1 минуту 47 секунд:
    ЗЫ:
    вот что нагугли за 35 секунд :)))

    http://www.codenet.ru/webmast/php/cron.php
     
  7. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    не пишет. Пишет в лог только результат выполнения задания, по типу:
    Код (Text):
    1. Apr  9 00:00:01 main CROND[1998]: (user) CMD (/path..../demo_cleaner > /dev/null 2>&1)
    По идее, ошибки выполнения пхп-скрипта не будут перенаправлены через "2>", так как ошибки выполнения скрипта - это тоже результат для крона. Ошибки выполнения будут перенаправлены, например, в случае если файл /home/user/mail не найден кроном. Тогда это будет ошибка.
    И в файл /tmp/tmp.cron крон запишет, что мол извиняй, братюнь, но файла я не нашел.
    Нужно весь вывод пихать в файл, по типу "/home/file > /var/log/logfile 2>&1". Даже можно не перезаписывать файл, а дописывать - через оператор ">>", если не ошибаюсь.
    Но не знаю как там на хостинге. Надо знать куда можно сохранить такой вывод, а то правами запуска крона не везде же разрешена запись этого файла.

    Вобщем, надо логи веб-сервера смотреть - там и будут все ошибки выполнения скрипта.
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А разве если скрипт запускать кроном - то ошибки выполнения будут добавлены в лог сервера..? Вроде, кроном - это же как из консоли и сервер там участия не принимает...

    Добавлено спустя 3 минуты 40 секунд:
    А по тому, что я написал выше - подумал, что
    - это и есть запись в файл того, что PHP-скрипт выдаст (включая сообщения об ошибках при включенном их отображении)...
     
  9. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    И то верно. Тут уж я лоханулся.

    Тогда не
    Код (Text):
    1. 0-59 * * * * /home/user/mail 2>/tmp/tmp.cron
    а
    Код (Text):
    1. 0-59 * * * * /home/user/mail >>/tmp/tmp.cron 2>&1
    осталось только с правами на запись/чтение уладить вопросы.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    пишет в mbox пользователя от которого запущен если не указано иного поведения
     
  11. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Это еще что?
     
  12. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    представление "почты" пользователя. это может быть и складирование в файл и отправка через mta для дальнейшего принятия решения о доставке по электронной почте