程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP不依賴系統自動執行機制,php系統自動機制

PHP不依賴系統自動執行機制,php系統自動機制

編輯:關於PHP編程

PHP不依賴系統自動執行機制,php系統自動機制


不依賴系統,以及不依賴yii事物機制,則考慮人為觸發。觸發可以寫在總體的公共頁面上,但是考慮到對數據庫以及WWW服務器的壓力問題,程序的延遲問題,需要對執行函數進行一些優化。

首先,我們考慮對數據庫的壓力,每次點擊頁面,我們都讓他觸發監聽系統,監聽系統首先要判斷此時是否需要更新我們的任務隊列(任務隊列我把他存在了緩存文件裡),如果不需要更新,則只需要對緩存文件裡的執行隊列進行時間正排序,對已經超時的隊列進行執行即可。但我們要考慮什麼時候更新隊列文件,以及如何更新,這樣才能減輕系統壓力。

我的思路是,首先,緩存文件可能會被人為刪除或者超時失效,則每次先檢測是否存在緩存文件(按任務/用戶/類型進行分別生成緩存),如果不存在,重新查詢數據庫,生成緩存文件(已經超時的直接執行,執行不成功的再扔進緩存隊列)。

接下來是每次訪問,如果有緩存文件,先對文件中的超時任務處理,然後更新緩存文件。此時遇到一個問題,就是操作時對緩存隊列的影響,可能我們會需要在緩存隊列的開頭或者中間的某個位置插入待執行隊列,這時我們可以手動刪除已存在的隊列就好了,下一次觸發時,由於找不到緩存文件,則會重新生成最新的緩存隊列。

當我們執行完一個任務的時候,隊列中的這個條目會刪除,如果隊列為空,則重新查詢,生成隊列,這樣就能保證最小次數的訪問數據庫。還有一個問題,比如對訂單自動確認收貨的監控,如果是用戶前台的更新,則需要同時刪除此用戶的緩存和該用戶所屬的後台管理員的緩存,這樣才能保證相關人員在浏覽這個訂單的時候,看到的都是最新的狀態。同理,後台管理員的修改訂單,也應同時刪除所有相關人員的緩存隊列。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved