2013-01-09 81 views
1

嗨,我想基於日曆製作一個定期活動。我想問的是:如何觸發事件?如果客戶端沒有登錄或打開webapp以在構造函數中觸發事件,那麼我如何使代碼無論如何運行。PHP中的經常性事件

我知道cron作業可能是解決方案,但是有沒有其他解決方案?(我想避免cron作業)。

+1

爲什麼你想避免使用CRON? –

+0

問題:你想要對這個重複(預定)事件做什麼樣的事情?即更新數據庫內的值? – ianace

回答

0

如果作業應觸發保持服務器在一個良好的狀態,應該使用cron作業運行,如果它的數據庫管理,數據庫管理器具有事件的表以cron作業,如果它需要僅用於用戶,如果你只是在用戶登錄之前不做這個工作,那麼它可以是一個安全的工作負載。你也可以手動登錄觸發事件,也可以管理頁面。

+0

爲了計費的目的,我想每年,每月都寫db。有PhPMyadmin這個工作的事件表嗎? – hgtaz

+0

是的,您可以使用[Events](http://dev.mysql.com/doc/refman/5.1/en/events.html)在X時間內觸發MySQL查詢,作爲如何執行此操作的示例,你可以查看如何做到這一點[本教程](http://www.sitepoint.com/how-to-create-mysql-events/)。 –

+0

非常感謝里卡多!如果這對我有效,它會爲我節省很多時間,閱讀和編​​碼cronjobs ...豎起大拇指 – hgtaz

3

你必須運行一些東西才能使其工作; cron對此非常理想,因爲它可以定期運行腳本來檢查事件等事件。

沒有這一點,您將被用戶操作觸發,但正如您所說,該用戶可能無法始終登錄來觸發它。

您可以修改您的代碼以讓任何用戶爲所有用戶觸發操作。這有點複雜,因爲您需要允許多個用戶同時登錄,而您只希望其中一個用戶觸發某些內容。我會在你的數據庫中建立一個表來跟蹤事件被觸發的最後時間,然後如果從現在開始到現在的差距足夠大,當用戶登錄時,在表中添加一個新的條目,阻止另一個用戶觸發此操作,並觸發你需要運行的位。

就像我說的,雖然這不會是一個完美的解決方案,我真的會推薦使用cron。你有什麼理由避免使用cron嗎?

+0

感謝阿什利您的迴應。唯一阻止我使用cron的是我對它不是很熟悉。但如果這是做到這一點的最佳方式,我會試試看。再次感謝。 – hgtaz

+0

cron很容易設置,維基百科頁面值得一看,它解釋了用於確定任務運行頻率的語法。通常,使用CLI編輯器作爲默認設置(通常是Vi/Vim),通過命令行通過「crontab -e」添加cron作業。我認爲現在很多典型的Linux發行版實際上都提供了一個註釋示例來幫助你。 –