PHP cron中的批處理

來源:互聯網
上載者:User

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

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

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

分散的方式與 cron

在 UNIX 機器上,執行批處理的核心程式是 cron 守護進程。這個守護進程讀取一個設定檔,這個檔案會告訴它要運行哪些命令列以及啟動並執行頻率。然後,這個守護進程就按照配置執行它們。在遇到錯誤時,它甚至能夠向指定的電子郵件地址發送錯誤輸出,從而協助對問題進行調試。

我知道一些工程師強烈主張使用線程技術。“線程!線程才是進行幕後處理的真正方法。cron 守護進程太過時了。”

我不這麼認為。

這兩種方法我都用過,我認為 cron 具備 “Keep It Simple, 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 指令,如下所示:

MAILTO=jherr@pobox.com

注意:對於 Microsoft Windows 使用者,有一個等效的 Scheduled Tasks 系統可以用來定期啟動命令列進程(比如 PHP 指令碼)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.