2015-05-28 66 views
1

我有一種特殊的要求,就是我正在使用Raspberry Pi 2 B設備將一些數據提供給雲服務器中的mysql數據庫。所以我在樹莓派上安裝了LAMP堆棧並在那裏配置我的腳本。它的任務是向遠程服務器(雲)mysql數據庫(我已經打開它的端口)插入一些值。腳本應該每30秒運行一次。因此,我不需要瀏覽器支持,因爲我們不需要在Raspberry Pi上顯示任何細節。腳本第一次運行後,它不應該停止,應該全天候運行24x7天。每隔30秒運行PHP腳本的最佳方式是什麼?

所以我的問題是,如何在每運行30秒我的劇本,看來我有幾個選擇

  1. 使用PHP線程(似乎需要瀏覽器的支持,或通過bash的運行時,如果發生某種例外首次腳本在一會兒腳本將停止再次運行它,直到它手動重置,數據庫連接將建立一次所以浪費時間建立它一次又一次會阻止)
  2. 使用Cronjob(似乎不需要瀏覽器支持即使第一次運行,自從它運行完畢後再猜測腳本再次減少腳本的終止,數據庫連接將爲每次運行重複建立,這樣時間就會變成wa ste)

我的主要擔憂是永不停止腳本,應該花費最少的時間來運行一次腳本,並且服務器不應該在每30秒鐘內擊中該進程而終止。請在某些時候建議您的意見可能有另一種方法,這是比上述方法更有效

+3

cron。或不斷運行的php進程。絕對沒有,通過瀏覽器點擊腳本 –

+1

這個問題可能會在另一個論壇上被更好地詢問,例如, serverfault.com,但在stackoverflow上還有其他答案,例如http://stackoverflow.com/questions/696839/how-do-i-write-a-bash-script-to-restart-a-process-if-it-dies/697064#697064。或者使用daemontools之類的東西 - http://cr.yp.to/daemontools/faq.html – Clyde

回答

3

您應該使用PHP創建daemon(如Windows服務)。看看凱文的博客,說明如何create daemons in PHP

你可以讓你的守護進程休眠30秒,並重新開始。首先做大量的日誌記錄,然後添加開關/參數來控制日誌記錄的級別。

關於question 2036654的PHP腳本也有一個很好的討論。

Cron不會爲你削減它,因爲它的最佳分辨率是1分鐘。

+0

Cron可以用於兩個條目,一個等待30秒,但非常難看。我更喜歡克萊德在評論中給出的解決方案。 –

相關問題