2013-05-09 3 views
1

Я пишу монитор в PHP, который контролирует время работы хоста. Итак, каждые n секунд мне нравится спрашивать хозяина о его статусе. Я мог бы просто сделать cronjob, который выполняет каждую минуту, но я мог бы также сделать что-то вроде этого:Как выполнить функцию каждые n секунд?

while(1) 
{ 
    check_status(); 
    sleep(60); 
} 

Какой самый эффективный способ сделать это?

ответ

1

Лучший способ - использовать cron.

CRON запускает ваш PHP каждую минуту. Если ваш сбой PHP, он будет перезапущен. Если вы вручную запустите PHP, и он выйдет из строя, вам придется вручную перезапустить его. Более того, с CRON вам не придется заботиться о том, что происходит при загрузке машины.

Конечная нота: PHP не действительно лучший инструмент, чтобы сделать такого рода вещей;)

Cheers,

К.

+1

Но как насчет производительности? Или это не имеет существенного значения? Я знаю, что PHP не лучший инструмент для него, он должен быть POC;) – f4der

+0

Предоставление единого процесса (вашего PHP), работающего на постоянной основе, будет стоить дороже, чем запуск его на регулярной основе. У вас будут небольшие накладные расходы на уровне ввода-вывода (загрузка файла, запуск PHP-интерпретатора ...), но, вероятно, он будет очень и очень мал;). НО (важно): не забывайте управлять случаем, когда ваш PHP будет запущен два раза. Это произойдет, если одно исполнение длится более 60 секунд, crontab запустит его до того, как первое будет иметь время до конца. – Koreth

1

Проделайте хрон, если машина возобновит ваш процесс автоматически перезапустится.

+0

Вы также можете сделать для него выскочку. Но разве это влияет на производительность? – f4der

+0

Понятия не имею, я никогда не использовал Upstart, но я бы предположил, что какой-либо удар по производительности, скорее всего, исходит из вашего кода, который вы используете каждые 60 секунд по сравнению со стоимостью процессора в расписании. –

Смежные вопросы