利用php-cli和任務(wù)計(jì)劃實(shí)現(xiàn)訂單同步功能的方法
1、應(yīng)用場景
用戶的訂單情況,需要我們?nèi)テ脚_(tái)網(wǎng)站通過API獲取。有兩個(gè)要點(diǎn):
(1)用戶遍歷,我們必須遍歷每個(gè)用戶,去獲取他們的訂單;
(2)定時(shí)獲取,獲取用戶訂單不是一勞永逸的,現(xiàn)在沒有不代表下一秒沒有,我們必須設(shè)定一個(gè)合適的時(shí)間間隔去獲取他。
2、通過遍歷表來實(shí)現(xiàn)用戶遍歷
用戶遍歷的問題,我們可以通過把所有用戶放在一個(gè)表里,并且表里有一個(gè)自增id,我們計(jì)算出id的最大值,然后從0開始循環(huán)取id等于指定值的行出來,這樣可以實(shí)現(xiàn)遍歷整個(gè)表
3、定時(shí)獲取的方法探討
(1)用死循環(huán)不斷執(zhí)行fetch,間隔以sleep動(dòng)作
考慮到當(dāng)用戶多了以后,可能幾乎每時(shí)每刻都需要進(jìn)行這樣fetch的動(dòng)作,那么是否還需要用任務(wù)計(jì)劃呢?為什么不直接while(true)死循環(huán)呢?而且還可以配合以sleep動(dòng)作。
這個(gè)方案沒考慮到的一點(diǎn)是,php是腳本文件,他不會(huì)自動(dòng)垃圾回收,貌似說也可以手動(dòng)回收,但總歸麻煩而且充滿不確定性。只要頁面執(zhí)行完他就干干凈凈自己清掉了,所以,能簡單解決的事情不要用麻煩的方法。
(2)用任務(wù)計(jì)劃實(shí)現(xiàn)定時(shí)執(zhí)行fetch,如果已經(jīng)在執(zhí)行則不做任何操作,直到下個(gè)計(jì)劃時(shí)間
這個(gè)方法還是用任務(wù)計(jì)劃,而且任務(wù)計(jì)劃很強(qiáng)大,默認(rèn)就可以實(shí)現(xiàn)當(dāng)前實(shí)例還在執(zhí)行的時(shí)候不要啟動(dòng)新實(shí)例。也就是說,如果一個(gè)執(zhí)行的動(dòng)作,執(zhí)行的時(shí)間超過任務(wù)計(jì)劃的間隔,那么當(dāng)下個(gè)任務(wù)啟動(dòng)的時(shí)候,第一個(gè)任務(wù)還沒執(zhí)行完成,這種情況他自動(dòng)不會(huì)重復(fù)執(zhí)行。設(shè)定如下圖:
以上這篇利用php-cli和任務(wù)計(jì)劃實(shí)現(xiàn)訂單同步功能的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Laravel 自動(dòng)生成驗(yàn)證的實(shí)例講解:login / logout
今天小編就為大家分享一篇Laravel 自動(dòng)生成驗(yàn)證的實(shí)例分析:login / logout,具有好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10php_screw安裝使用教程(另一個(gè)PHP代碼加密實(shí)現(xiàn))
這篇文章主要介紹了php_screw安裝使用教程,php_screw是另一個(gè)PHP代碼加密實(shí)現(xiàn),和Zend的encoder類似,需要的朋友可以參考下2014-05-05基于php偽靜態(tài)的實(shí)現(xiàn)詳細(xì)介紹
本篇文章介紹了,基于php偽靜態(tài)的實(shí)現(xiàn)詳細(xì)分析。需要的朋友參考下2013-04-04php上傳文件,創(chuàng)建遞歸目錄的實(shí)例代碼
這篇文章介紹了php上傳文件,創(chuàng)建遞歸目錄的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10php中使用array_filter()函數(shù)過濾空數(shù)組的實(shí)現(xiàn)代碼
這篇文章主要介紹了php中使用array_filter()函數(shù)過濾空數(shù)組的實(shí)現(xiàn)代碼,這是瀏覽PHP手冊時(shí)無意發(fā)意的一個(gè)有意思的array_filter()函數(shù)用法,需要的朋友可以參考下2014-08-08PHP面向?qū)ο缶幊讨钊肜斫夥椒ㄖ剌d與方法覆蓋(多態(tài))
這篇文章主要介紹了PHP面向?qū)ο缶幊讨钊肜斫夥椒ㄖ剌d與方法覆蓋(多態(tài))的相關(guān)資料,需要的朋友可以參考下2015-12-12DWZ+ThinkPHP開發(fā)時(shí)遇到的問題分析
這篇文章主要介紹了DWZ+ThinkPHP開發(fā)時(shí)遇到的問題,結(jié)合實(shí)例形式分析了DWZ+ThinkPHP在ajax調(diào)用中出現(xiàn)錯(cuò)誤問題的解決方法,需要的朋友可以參考下2016-12-12