你說你不想使用cron作業,因爲你只需要發送一次的消息,但這些消息發送這是誤解t的方式將爲此類任務編寫一個cron作業
考慮一種情況,即您有許多用戶創建許多要在各個給定時間點發送的消息。
您不希望有一個PHP程序坐在您的服務器上,隨時爲您的服務器上的每個消息;這會浪費服務器資源,即使它們在整個過程中都只是sleep()
。
相反,人們會使用cron作業每分鐘運行一次短暫的PHP程序(或任何適合您的間隔)。
您的消息創建程序不會被寫入以便發送消息;相反,它會將它插入到數據庫中,以及它需要發送的時間。
同時,cronjob PHP程序會每分鐘掃描一次該數據庫,看看是否有任何消息是由於發送而尚未發送的。然後它會發送這些消息並將它們標記爲「發送」在數據庫上。
這是寫這種東西的標準方式,所以人們向你推薦它並不奇怪。
這樣做意味着你永遠不會有在你的系統上運行的程序超過必要的時間。這兩個PHP程序都快速完成工作並退出,這意味着沒有人會一直等待它們。
它也使它更加健壯。想象一下,如果你的服務器必須重新啓動。如果你有一大堆PHP程序運行幾個小時,等待他們發送消息,那麼他們都會丟失。另一方面,如果他們已將消息保存到數據庫中,那麼cron作業將找到它們並在服務器重新啓動後正確發送它們。
來源
2013-02-13 16:22:15
SDC
你舒爾它塊完整的PHP?因爲每個執行php cli應該導致一個自己的線程? – Dukeatcoding 2013-02-13 16:10:43
你爲什麼把睡眠放在'exec'中? – 2013-02-13 16:10:54
順便說一句。我們在談論什麼樣的信息 – Dukeatcoding 2013-02-13 16:11:26