利用php-cli和任務(wù)計劃實現(xiàn)訂單同步功能的方法
1、應(yīng)用場景
用戶的訂單情況,需要我們?nèi)テ脚_網(wǎng)站通過API獲取。有兩個要點:
(1)用戶遍歷,我們必須遍歷每個用戶,去獲取他們的訂單;
(2)定時獲取,獲取用戶訂單不是一勞永逸的,現(xiàn)在沒有不代表下一秒沒有,我們必須設(shè)定一個合適的時間間隔去獲取他。
2、通過遍歷表來實現(xiàn)用戶遍歷
用戶遍歷的問題,我們可以通過把所有用戶放在一個表里,并且表里有一個自增id,我們計算出id的最大值,然后從0開始循環(huán)取id等于指定值的行出來,這樣可以實現(xiàn)遍歷整個表
3、定時獲取的方法探討
(1)用死循環(huán)不斷執(zhí)行fetch,間隔以sleep動作
考慮到當(dāng)用戶多了以后,可能幾乎每時每刻都需要進(jìn)行這樣fetch的動作,那么是否還需要用任務(wù)計劃呢?為什么不直接while(true)死循環(huán)呢?而且還可以配合以sleep動作。
這個方案沒考慮到的一點是,php是腳本文件,他不會自動垃圾回收,貌似說也可以手動回收,但總歸麻煩而且充滿不確定性。只要頁面執(zhí)行完他就干干凈凈自己清掉了,所以,能簡單解決的事情不要用麻煩的方法。
(2)用任務(wù)計劃實現(xiàn)定時執(zhí)行fetch,如果已經(jīng)在執(zhí)行則不做任何操作,直到下個計劃時間
這個方法還是用任務(wù)計劃,而且任務(wù)計劃很強大,默認(rèn)就可以實現(xiàn)當(dāng)前實例還在執(zhí)行的時候不要啟動新實例。也就是說,如果一個執(zhí)行的動作,執(zhí)行的時間超過任務(wù)計劃的間隔,那么當(dāng)下個任務(wù)啟動的時候,第一個任務(wù)還沒執(zhí)行完成,這種情況他自動不會重復(fù)執(zhí)行。設(shè)定如下圖:

以上這篇利用php-cli和任務(wù)計劃實現(xiàn)訂單同步功能的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP快速按行讀取CSV大文件的封裝類分享(也適用于其它超大文本文件)
這篇文章主要介紹了一個PHP快速按行讀取CSV大文件的封裝類,這個類同時也適用于其它體積較大的文本文件,需要的朋友可以參考下2014-04-04
php之XML轉(zhuǎn)數(shù)組函數(shù)的詳解
本篇文章是對php中的XML轉(zhuǎn)數(shù)組函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
tp5.1 框架數(shù)據(jù)庫-數(shù)據(jù)集操作實例分析
這篇文章主要介紹了tp5.1 框架數(shù)據(jù)庫-數(shù)據(jù)集操作,結(jié)合實例形式分析了tp5.1 框架數(shù)據(jù)庫查詢結(jié)果數(shù)據(jù)集獲取、遍歷相關(guān)操作技巧與使用注意事項,需要的朋友可以參考下2020-05-05
ThinkPHP實現(xiàn)更新數(shù)據(jù)實例詳解(demo)
本文給大家介紹thinkphp實現(xiàn)更新數(shù)據(jù)的實例詳解以及thinkphp更新數(shù)據(jù)庫的五種方法,本文介紹的非常不錯,具有參考借鑒價值,感興趣的朋友可以參考下2016-06-06
關(guān)于PhpStorm設(shè)置點擊編輯文件自動定位源文件的實現(xiàn)方式
這篇文章主要介紹了關(guān)于PhpStorm設(shè)置點擊編輯文件自動定位源文件的實現(xiàn)方式,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12

