簡體   English   中英

cron作業或PHP調度程序

[英]cron jobs or PHP scheduler

我使用MYSQL作為我的數據庫,PHP作為我的編程語言。我想運行一個cron作業,該作業將一直運行,直到當前系統日期與我的數據庫表中名為“PROJECT”的“deadline(date)”列匹配。一旦日期必須運行更新查詢,這將更改狀態(項目表的字段)從“打開”到“關閉”。

我不確定cron作業是最好的方式,還是我可以使用觸發器,或者可能是其他東西。我也使用Apache作為我的Web服務器,我的操作系統是windows vista。

這也是最好的方法嗎? PHP調度程序或cron作業或任何其他方法? 任何人都可以開導我嗎?

我認為你的概念需要改變。

PHP無法安排工作,MySQL也無法安排工作。 MySQL中的觸發器在發生mysql查詢時執行,而不是在特定時間執行。 也不

這種限制通常不是Web開發中的問題。 原因是因為您的PHP應用程序應該控制進出的所有數據。 通常,這僅表示向用戶或其他程序顯示該數據或其他格式的HTML。

在你的情況下,你可以這樣思考。 截止日期是設定日期。 您可以將其視為數據,並將其保存到數據庫中。 如果發生截止日期並不重要,那么您在數據庫中發送的數據將被正確查看。

當您的應用程序發出請求時,檢查截止日期是否已過去,如果是,則顯示項目已關閉 - 或者在顯示之前更新項目已關閉。

沒有理由獨立更新PHP應用程序的數據。

通常,您要安排的唯一事項是在加載方面會影響應用程序的作業,或者只需要執行一次,或者並發或時間成問題的作業。

在你的情況下,這些都不適用。

PS:我沒有嘗試過PHPscheduler,但我猜它不是真正的調度程序。 Cron是一個守護進程,直到給定任務在其隊列中到期,執行任務,然后休眠直到下一個到期(至少那是它在當前算法中的作用)。 如果沒有套接字和fork擴展,PHP不能像特殊設置那樣做。 所以PHPscheduler很可能只是檢查一個任務的日期是否已經過期,每次加載一個網頁(每當PHP執行一個頁面時)。 這與您只檢查項目上的日期是否已過期沒有任何不同,沒有PHPScheduler的開銷。

對於任何相關的調度,我總是會去cron工作。

最重要的一點是你可以回復信息,然后通過電子郵件發送給你。

你會發現一旦你開始使用cronjobs,就很難停下來。

cron本身並不存在於Vista中,但存在的是標准的Windows調度管理器,您可以使用命令行運行,如“php -q -f myfile.php”,它將在給定時間執行php文件。

你也可以使用cron程序的端口,那里有很多。

如果它對第二個不重要,那么任何Windows調度應用程序都會這樣做,為了簡單起見,請務必在PATH變量中使用PHP bin路徑。

對於Windows CRON作業,我不能推薦PyCron

怎么樣PHPscheduler..R他們不比cronjobs好? 我認為crons將獨立於應用程序,因此如果必須更改主機將會很困難。我不是很確定。如果有人可以對此發表評論,那將是很棒的! 謝謝!

雖然CRON和Windows計划任務是調度作業/任務定期運行的經過驗證的真實方法,但是在CRON / Windows中具有不同計划任務的用例可能變得乏味。 即,當您希望讓用戶安排要運行的內容時,或者您希望用戶更喜歡簡單/可維護性/可移植性/等或上述所有內容時。

如果我不想將CRON / Windows用於計划任務,我會在應用程序中構建一個任務調度系統。 這仍然需要安排1個CRON作業或Windows任務。 我們的想法是在數據庫中存儲作業詳細信息(作業名稱,作業屬性,上次運行時間,運行間隔,以及對您的實施很重要的任何其他內容)。 然后,您可以在CRON或Windows中安排“主”作業,該作業可以為您處理所有其他作業。 你需要這個主要工作至少在最短的時間間隔內運行; 如果您希望能夠安排每分鍾運行的作業,則主作業需要每分鍾運行一次。

然后,您可以輕松地在PHP后台啟動每個預定作業(如果需要)。 在內存受限的系統中,您可以監視內存使用情況或跟蹤PID(各種方法)並限制在給定時間運行的N個作業。

我使用這種方法取得了很大的成功,YMMV可以根據您的需求和實施情況而定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM