摘要:其實(shí)類似于如下例子,遍歷每個(gè)數(shù)字,每個(gè)作為一組這里是個(gè)基本思想就是遍歷的時(shí)候計(jì)數(shù),取模可以知道是否滿足個(gè),每個(gè)一發(fā)送。代碼如下分批發(fā)送省略上下文。
讀取一個(gè) txt 文本文件,里面是一行一個(gè) userid,需要給這些用戶發(fā)送文件(做什么不重要),發(fā)送文件接口支持一次最多發(fā) 10 個(gè)用戶,所以需要分批發(fā)送,每 10 個(gè) userid 作為一批。
這種場景很常見,尤其是一次處理量太大了需要分批的情況。其實(shí)類似于如下例子,遍歷每個(gè)數(shù)字,每 5 個(gè)作為一組(這里是 10 個(gè)):
1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 | 16 17 18
基本思想就是:遍歷的時(shí)候計(jì)數(shù),取模可以知道是否滿足 10 個(gè),每 10 個(gè)一發(fā)送。但是要注意最后如果存在剩余不足 10 個(gè)的情況不能漏了。代碼如下:
$uidFile = storage_path("app/public") . DIRECTORY_SEPARATOR . $task["uid_file"]; $count = 0; $max = 10; //分批發(fā)送 foreach (file($uidFile) as $line) { $userID = intval($line); if ($userID <= 0) { continue; } $userIDs[] = $userID; $count++; if ($count % $max == 0) { $this->sendMail($userIDs, $files, (string)$task["note"], (int)$task["reward"], $task); $userIDs = []; } } if ($userIDs) { $this->sendMail($userIDs, $files, (string)$task["note"], (int)$task["reward"], $task); }
省略上下文。
(隨手記錄一下代碼片段,以備日后參考,原文地址:https://blog.tanteng.me/2017/...)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/26030.html
摘要:結(jié)束語在這里,我們雖然僅僅涉及了一些高階函數(shù)應(yīng)用的皮毛,但這兩個(gè)技巧,實(shí)是項(xiàng)目開發(fā)當(dāng)中克敵制勝,提高性能的實(shí)戰(zhàn)利器。 通過函數(shù)節(jié)流與函數(shù)分時(shí)提升應(yīng)用性能 在例如表單自動(dòng)補(bǔ)全,數(shù)據(jù)埋點(diǎn),文章內(nèi)容自動(dòng)保存,視口監(jiān)聽,拖拽,列表渲染等高頻操作時(shí),如果同時(shí)有其它UI行為占據(jù)線程,瀏覽器端時(shí)常會(huì)出現(xiàn)卡頓現(xiàn)象,服務(wù)器端也面臨著較大壓力。這時(shí),函數(shù)節(jié)流,與函數(shù)分時(shí)將成為我們的一大輔助。 一、函數(shù)...
摘要:本書的地址篇收集了一些常見的基礎(chǔ)進(jìn)階面試題,基礎(chǔ)的面試題不再作答。如何實(shí)現(xiàn)持久化持久化,將在內(nèi)存中的的狀態(tài)保存到硬盤中,相當(dāng)于備份數(shù)據(jù)庫狀態(tài)。相當(dāng)于備份數(shù)據(jù)庫接收到的命令,所有被寫入的命令都是以的協(xié)議格式來保存的。 本書的 GitHub 地址:https://github.com/todayqq/PH... PHP 篇收集了一些常見的基礎(chǔ)、進(jìn)階面試題,基礎(chǔ)的面試題不再作答。 基礎(chǔ)篇 ...
摘要:遍歷完成后返回一個(gè)新的數(shù)組你可以同時(shí)處理多個(gè)數(shù)組你好嗎原罪你好嗎原罪是的,遍歷的次數(shù)以最長的數(shù)組為準(zhǔn)。假如你處理的是二維數(shù)組,處理方式也是萬變不離其宗的。 在PHP的日常操作中,數(shù)組是最常出現(xiàn)的結(jié)構(gòu),而我們幾乎每天都在處理數(shù)組相關(guān)的內(nèi)容。那么問題來了,你一般怎么遍歷并處理數(shù)組。 1、foreach 很熟悉吧,是不是你的最愛? $arr = [a, b, c]; foreach ($a...
摘要:如果運(yùn)算持續(xù)占用主線程,頁面就沒法得到及時(shí)的更新。三解題思路解決主線程長時(shí)間被運(yùn)算占用這一問題的基本思路,是將運(yùn)算切割為多個(gè)步驟,分批完成。這顆新樹每生成一個(gè)新的節(jié)點(diǎn),都會(huì)將控制權(quán)交回給主線程,去檢查有沒有優(yōu)先級更高的任務(wù)需要執(zhí)行。 歡迎關(guān)注我的公眾號(hào)睿Talk,獲取我最新的文章:showImg(https://segmentfault.com/img/bVbmYjo); 一、前言 在...
摘要:要不要顯式關(guān)閉查詢數(shù)據(jù)實(shí)現(xiàn)一實(shí)現(xiàn)二實(shí)現(xiàn)二更方便簡潔但是沒有顯式關(guān)閉有沒問題呢一些結(jié)論如果已被遍歷完會(huì)自動(dòng)關(guān)閉無需顯式關(guān)閉所以實(shí)現(xiàn)二沒有問題如果只是遍歷了部分?jǐn)?shù)據(jù)需要顯式關(guān)閉在遍歷過程中同時(shí)處理其他業(yè)務(wù)邏輯需要在中關(guān)閉避免中間報(bào)了異常沒有迭代 cursor要不要顯式關(guān)閉 Mongo查詢數(shù)據(jù)實(shí)現(xiàn)一 MongoCursor cursor = collection.find().limit(l...
閱讀 2990·2021-11-23 09:51
閱讀 1671·2021-11-15 11:36
閱讀 3144·2021-10-13 09:40
閱讀 2389·2021-09-28 09:35
閱讀 13428·2021-09-22 15:00
閱讀 1463·2019-08-29 13:56
閱讀 3015·2019-08-29 13:04
閱讀 2836·2019-08-28 18:06