PHP cron中的批處理

2021-05-27 03:16:25 字數 1862 閱讀 3971

大型的連鎖店有乙個大問題。每天,在每家商店會發生數千次交易。公司執行官希望對這些資料進行挖掘。哪些產品賣得好?哪些不好?有機產品在**賣得好?冰淇淋的銷售情況怎麼樣?

為了捕捉這些資料,組織必須將所有事務性資料裝載進乙個資料模型,以便更適合生成公司所需的報告型別。但是,這很花費時間,而且隨著連鎖規模的增長,處理一天的資料可能要花費一天以上的時間。因此,這是個大問題。

現在,您的 web 應用程式可能不需要處理這麼多資料,但是任何站點的處理時間都有可能超過客戶願意等待的時間。一般來說,客戶願意等待的時間是 200 毫秒,如果超過這個時間,客戶就會覺得過程 「緩慢」。這個數字基於桌面應用程式,而 web 使我們更有耐心了。但無論如何,不應該讓客戶等待的時間超過幾秒。所以,要採用一些策略來處理 php 中的批處理

作業。

分散的方式與 cron

在 unix® 機器上,執行批處理

的核心程式是 cron 守護程序。這個守護程序讀取乙個配置檔案,這個檔案會告訴它要執行哪些命令列以及執行的頻率。然後,這個守護程序就按照配置執行它們。在遇到錯誤時,它甚至能夠向指定的電子郵件位址傳送錯誤輸出,從而幫助對問題進行除錯。

我知道一些工程師強烈主張使用執行緒技術。「執行緒!執行緒才是進行後台處理的真正方法。cron 守護程序太過時了。」

我不這麼認為。

這兩種方法我都用過,我認為 cron 具備 「keep it ******, stupid(kiss,簡單就是美)」 原則的優點。它使後台處理保持簡單。不需要編寫一直執行的多執行緒的作業處理應用程式(因此不會有記憶體洩漏),而是由 cron 啟動乙個簡單的批處理

指令碼。這個指令碼判斷是否有作業要處理,執行作業,然後退出。不需要擔心記憶體洩漏。也不需要擔心執行緒停止或陷入無限迴圈。

那麼,cron 是如何工作的?這依賴於您所處的系統環境。我只討論老式簡單的 cron 的 unix 命令列版本,您可以向系統管理員諮詢如何在自己的 web 應用程式中實現它。

下面是乙個簡單的 cron 配置,它在每天晚上 11 點執行乙個 php 指令碼:

0 23 * * * jack /usr/bin/php /users/home/jack/myscript.php

前 5 個字段定義應該啟動指令碼的時間。然後是應該用來執行這個指令碼的使用者名稱。其餘的命令是要執行的命令列。時間字段分別是分、小時、月中的日、月和週中的日。下面是幾個示例。

命令:

15 * * * * jack /usr/bin/php /users/home/jack/myscript.php

在每個小時的第 15 分鐘執行指令碼。

命令:

15,45 * * * * jack /usr/bin/php /users/home/jack/myscript.php

在每個小時的第 15 和第 45 分鐘執行指令碼。

命令:

*/1 3-23 * * * jack /usr/bin/php /users/home/jack/myscript.php

在早上 3 點到晚上 11 點之間的每分鐘執行指令碼。

命令 30 23 * * 6 jack /usr/bin/php /users/home/jack/myscript.php

在每星期六的晚上 11:30 執行指令碼(星期六由 6 指定)。

可以看到,組合的數量是無限的。可以根據需要控制執行指令碼的時間。還可以指定多個要執行的指令碼,這樣的話,一些指令碼可以每分鐘都執行,而其他指令碼(比如備份指令碼)可以每天只執行一次。

為了指定將報告的錯誤傳送到哪個電子郵件位址,可以使用 mailto 指令,如下所示:

[email protected]

注意:對於 microsoft® windows® 使用者,有乙個等效的 scheduled tasks 系統可以用來定期啟動命令列程序(比如 php 指令碼)。

批處理中的

如果是 a 這種形式 就是變數的引用,echo off set a 123 rem定義乙個變數a 賦值為123 echo a rem顯示出變數a的值 如果不加 系統會把a當字元處理了,不會當成變數的 i 這種變數是for 語句裡面 特有的變數 還有一種是外部變數,接受外部引數的格式是 1 9 共9個...

JDBC中的批處理

jdbc中 有兩個批處理函式 addbatch string 和 executebatch 有兩種方法可以進行批處理 第一種是用statement 另外一種是preparedstatement 一 使用statement 1statement sm con.createstatement 2stri...

批處理中的變數

set 功能一覽 設定變數 格式 set 變數名 變數值 詳細 被設定的變數以 變數名 引用 取消變數 格式 set 變數名 詳細 取消後的變數若被引用 變數名 將為空 展示變數 格式 set 變數名 詳細 展示以變數名開頭的所有變數的值 列出所有可用的變數 格式 set 計算器 格式 set a ...