cron, php

Discussion in 'PHP' started by Chrome~, 9 Apr 2011.

  1. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Здравствуйте.

    Можно ли работать с cron из php? По моему у многих движков форумов, сайтов и т. д. есть необходимость выполнять некоторые действия в определенное время. Как работают такие скрипты, ведь пользователь сам вручную не делает никаких записаей в cron, не добавляет никаких заданий, все происходит автоматически. Я немного сомневаюсь, что скрипты работают напрямую с cron, но все таки они както добиваються подобного эффекта.

    В настройках php может присутствовать параметр max_execution_time с маленьким значением.

    Заранее благодарю.
     
    #1 Chrome~, 9 Apr 2011
    Last edited: 9 Apr 2011
  2. lstaticl

    lstaticl New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    сделайте скрипт с бесконечным циклом, который будет выполнять определенные действия с заданным интервалом. И вызывайте его через system() чтоб фоном запустить.
    А вообще чем вас крон не устроил?
     
  3. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Когда пишешь более менее серьезные проекты нужно делать так, чтобы автоматизировалось все. Не надо заставлять пользователя делать лишнюю работу, в том числе и добавлять задания в cron.
     
    #3 Chrome~, 10 Apr 2011
    Last edited: 10 Apr 2011
  4. lstaticl

    lstaticl New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Не вижу связи max_execution_time с вашим вопросом. И так же не вижу никакой связи между серьезностью проекта и автоматизацией. Поясните?
     
  5. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    При небольшом значении max_execution_time выполнение "вечных циклов" фактически не возможно.
    Еще ни разу не видел, чтобы при установке, например, форума, было написано, что пользователь должен добавить в крон расписание на выполнение некоторых скриптов.
     
  6. lstaticl

    lstaticl New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    1. чем мешает в своих "демонах" вешать set_time_limit(0) ???

    Поконкретнее задачу можно изложить? Форум - это ничем не серьезный проект...
     
  7. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    set_time_limit(0) - да, это вариант, но он может быть недоступен.
    Если движок форумный движок vBulletin, который разрабатываеться и поддерживаеться не один год, и у которого есть пользователи по всему миру, не является серьезным проектом, тогда уже не понимаю, что для вас значит "серьезный проект".
     
  8. lstaticl

    lstaticl New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    А что в "вобле" делается автоматически, как будто из под крона???

    На крон у вас тоже может не быть прав...
     
  9. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Я видел скрипт cron.php в vBulletin, поэтому решил, что происходит какая то работа с крон или ей подобная. В этом скрипте есть строчка @set_time_limit(0), но нету никакого цикла. Кроме того, чтобы полностью осознать смысл кода, нужно разбирать внутрение классы vBulletin, которые там используються.

    Также есть еще кое что. При регистрации нового пользователя ему отправляеться письмо с ссылкой активации аккаунта. Ссылка обычно живет 24 часа. То есть сразу после регистрации в БД записываються какие то временные данные (код активации), и после активации аккаунта или спустя 24 часа они должны удалиться? Или они вообще никогда не удаляються?
     
    #9 Chrome~, 10 Apr 2011
    Last edited: 10 Apr 2011
  10. lstaticl

    lstaticl New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Чтоб понять как работает cron.php у воблы, не обязательно перебирать весь код. Он берет из базы задания и если пора, инклюдит обработчики событий, которые наступили.

    Возможно в вобле они удаляются, но по большому счету смысла в этом нет. Можно проверять что с момента создания кода подтвержедния и самим подтверждением прошло более 24 часов. Тогда и грохнуть запись, рассказав пользователю, что он проспал.
     
    1 person likes this.
  11. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Да-да, этот вариант я не исключал. Это просто и эффективно, так как достаточно всего одной проверки один раз. Но с другой стороны, - если много пользователей будут регистрироваться и не подтверждать емейл, в БД может оказаться много ненужной инфы.
     
  12. lstaticl

    lstaticl New Member

    Joined:
    29 Aug 2010
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Для этого у форума есть админ и модеры, которые раз в месяц тычут кнопку в админке "удалить срач", и срач волшебным образом пропадает))))