置頂 關於php cron任務管理的實現假想

2021-07-22 17:51:02 字數 935 閱讀 5053

可以通過建立表[id,name,status,func,timer,last_time,created_at] 來統一存放專案中的計畫任務指令碼,通過簡單的配置 

能將各計畫任務抽象成簡單的任務類,然後通過crontab中配置的單個入口對其進行統一訪問,從而減少了上線**對 

線上伺服器環境進行修改的麻煩. 

然後此處有一些坑,因為任務按功能性質劃分可能有好幾種,比如: 

1. 單次執行,立刻結束,同一時刻可執行多個例項 

2. 守護程序,同一時刻只能執行乙個例項 

對 第二種 需要 

加鎖 機制,還要防止程式因為出現爆錯,異常等情況沒有解鎖,導致不能再次啟動此種任務 

對於此種任務還需要考慮執行期間如果因其他需求變更,如何快速方便的終止此任務 

猜想 通過 任務id  來實現鎖機制,每次任務執行時均需要申請鎖,每次申請的鎖均有固定的使用配額,此種任務 

每批次執行完成後均需消耗一次使用配額,當配額為0時則需要向系統重新申請鎖. 

lock_id: $task_id 

lock__quota: $quota  

每次重新申請鎖,均需再次讀取任務配置表中該任務的配置資訊 

如果申請失敗(-1),則關閉此次執行,等待下次執行. 這樣當想中止此種任務時可採取2種方案: 

1. 中止本次,只需將其使用配額設為-1 

2. 完全禁止,重置本任務的status為禁用,再重置其使用配額為-1 

任務結束之後,要釋放鎖,如果鎖釋放失敗,需要有乙個 

無效鎖檢測機制來強制釋放 

無效鎖的判定: 

關鍵是 如何確定 任務例項是否是活著的,鎖配額 < 1 能否認定是無效鎖.會不會出現任務在重新申請鎖的過程中 

被 無效鎖檢測機制給乾掉? 

乾掉之後是否有影響? 

-------------- 

以上是我的假想,求拍磚 

關於WINDOUWS任務管理器的問題

windows 2000 xp 的任務管理器是乙個非常有用的工具,它能提供我們很多資訊,比如現在系統中執行的程式 程序 但是面對那些檔案可執行檔名我們可能有點茫然,不知道它們是做什麼的,會不會有可疑程序 病毒,木馬等 本文的目的就是提供一些常用的windows 2000 中的程序名,並簡單說明它們的...

關於IOS的多工以及記憶體管理

一 看了很多fy為自己的可用記憶體是350mb還是380mb糾結,為了多優化出一點可用記憶體費腦筋。這種看法是不對的。所謂空載和滿載,是對作業系統來說的。而對於記憶體晶元電路而言,看到的只是0和1,就算是空閒的記憶體單元,也有0和1在裡面,它必須忠實地儲存所有資料,iphone4有512mb的記憶體...

VC關於置頂視窗的方法小結

自 將窗體置頂的方法有 將窗體置頂的api函式 setwindowpos m hwndtop,hwnd topmost,0,0,0,0,swp nomove swp nosize mfc pdlg setwindowpos cwnd wndtopmost,0,0,0,0,swp nomove swp...