资讯专栏INFORMATION COLUMN

PHP 遍历元素并分批处理

icattlecoder / 3064人阅读

摘要:其实类似于如下例子,遍历每个数字,每个作为一组这里是个基本思想就是遍历的时候计数,取模可以知道是否满足个,每个一发送。代码如下分批发送省略上下文。

读取一个 txt 文本文件,里面是一行一个 userid,需要给这些用户发送文件(做什么不重要),发送文件接口支持一次最多发 10 个用户,所以需要分批发送,每 10 个 userid 作为一批。

这种场景很常见,尤其是一次处理量太大了需要分批的情况。其实类似于如下例子,遍历每个数字,每 5 个作为一组(这里是 10 个):

1 2 3 4 5 | 6 7 8 9 10 | 11 12 13 14 15 | 16 17 18

基本思想就是:遍历的时候计数,取模可以知道是否满足 10 个,每 10 个一发送。但是要注意最后如果存在剩余不足 10 个的情况不能漏了。代码如下:

$uidFile = storage_path("app/public") . DIRECTORY_SEPARATOR . $task["uid_file"];
$count = 0;
$max = 10;

//分批发送
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/...)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26030.html

相关文章

  • 通过函数节流与函数分时提升应用性能

    摘要:结束语在这里,我们虽然仅仅涉及了一些高阶函数应用的皮毛,但这两个技巧,实是项目开发当中克敌制胜,提高性能的实战利器。 通过函数节流与函数分时提升应用性能 在例如表单自动补全,数据埋点,文章内容自动保存,视口监听,拖拽,列表渲染等高频操作时,如果同时有其它UI行为占据线程,浏览器端时常会出现卡顿现象,服务器端也面临着较大压力。这时,函数节流,与函数分时将成为我们的一大辅助。 一、函数...

    lijy91 评论0 收藏0
  • PHPer面试指南-PHP

    摘要:本书的地址篇收集了一些常见的基础进阶面试题,基础的面试题不再作答。如何实现持久化持久化,将在内存中的的状态保存到硬盘中,相当于备份数据库状态。相当于备份数据库接收到的命令,所有被写入的命令都是以的协议格式来保存的。 本书的 GitHub 地址:https://github.com/todayqq/PH... PHP 篇收集了一些常见的基础、进阶面试题,基础的面试题不再作答。 基础篇 ...

    stackvoid 评论0 收藏0
  • 遍历PHP数组的6种方式

    摘要:遍历完成后返回一个新的数组你可以同时处理多个数组你好吗原罪你好吗原罪是的,遍历的次数以最长的数组为准。假如你处理的是二维数组,处理方式也是万变不离其宗的。 在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那么问题来了,你一般怎么遍历并处理数组。 1、foreach 很熟悉吧,是不是你的最爱? $arr = [a, b, c]; foreach ($a...

    awkj 评论0 收藏0
  • React Fiber 原理介绍

    摘要:如果运算持续占用主线程,页面就没法得到及时的更新。三解题思路解决主线程长时间被运算占用这一问题的基本思路,是将运算切割为多个步骤,分批完成。这颗新树每生成一个新的节点,都会将控制权交回给主线程,去检查有没有优先级更高的任务需要执行。 欢迎关注我的公众号睿Talk,获取我最新的文章:showImg(https://segmentfault.com/img/bVbmYjo); 一、前言 在...

    leap_frog 评论0 收藏0
  • MongoCursor简单总结

    摘要:要不要显式关闭查询数据实现一实现二实现二更方便简洁但是没有显式关闭有没问题呢一些结论如果已被遍历完会自动关闭无需显式关闭所以实现二没有问题如果只是遍历了部分数据需要显式关闭在遍历过程中同时处理其他业务逻辑需要在中关闭避免中间报了异常没有迭代 cursor要不要显式关闭 Mongo查询数据实现一 MongoCursor cursor = collection.find().limit(l...

    Sourcelink 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<