2013-05-09 78 views
1

我正在用PHP編寫一個監視主機正常運行時間的監視器。 所以每隔n秒鐘我都會問主機的狀態。我可以簡單地做出每分鐘執行一次一個cronjob,但我也可以做這樣的事情:如何每n秒執行一次函數?

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

什麼是最有效的方式做到這一點?

回答

1

更好的方法是使用cron。

CRON會每分鐘啓動一次您的PHP。如果你的PHP崩潰,它將被重新啓動。如果您手動啓動PHP並崩潰,則必須手動重新啓動它。除此之外,使用CRON,您無需關心機器啓動時發生的情況。

最後說明:PHP是不是真的做出這種事的最佳工具;)

乾杯,

K.

+1

但是性能呢?或者它沒有顯着的區別?我知道PHP並不是最好的工具,它意味着POC;) – f4der 2013-05-09 14:14:32

+0

讓一個永久運行的進程(你的PHP)花費比定期啓動它更多。在IO級別上你會有一個小的開銷(加載文件,啓動PHP解釋器......),但可能會非常非常小;)。但是(重要的):不要忘記管理你的PHP將被啓動兩次的情況。如果一次執行超過60秒,將會發生,crontab會在第一次執行結束之前啓動它。 – Koreth 2013-05-09 14:30:34

1

執行cron作業,如果機器重新啓動您過程會自動重啓。

+0

你也可以爲它做一個暴發戶的工作。但它在性能上有什麼不同? – f4der 2013-05-09 14:18:04

+0

不知道,我從來沒有使用過Upstart,但我猜測任何性能影響更可能來自您的代碼,而您每60秒運行的代碼與調度的CPU成本相比。 – 2013-05-09 14:53:24