首页 > 系统相关 >PHP内存占用优化

PHP内存占用优化

时间:2023-12-28 13:45:15浏览次数:34  
标签:数据 batchData batchSize 内存 th 100 PHP data 占用

请求次数:1300次
执行时间:200*60=12000S

// 要分批保存数据,可以将 `$all_data` 数组拆分成多个小数组,并逐一调用 `saveAll` 方法。以下是一个示例,演示如何将数据分批为每批100条进行保存:

$dataModel = new cxVipUserStudyInfo();
$batchSize = 100;
$offset = 0;

foreach ($jsonData as &$value) {
    // ... 检查参数和处理数据 ...

    $all_data[] = $value;
}

$totalDataCount = count($all_data);

for ($i = 0; $i < $totalDataCount; $i += $batchSize) {
    $batchData = array_slice($all_data, $i, $batchSize);
    
    try {
        $result = $dataModel->saveAll($batchData);
        unset($batchData);
    } catch (\Throwable $th) {
        mylog('请求失败:', $th, 'saveStuStudyDataInfo_error', 'chaoxue');
        return $this->jsonCode($th, 1);
    }
}

在这个示例中:

  1. 设置一个 $batchSize 变量,表示每批数据的数量(这里设置为100)。
  2. 使用 for 循环遍历 $all_data 数组,每次迭代的步长为 $batchSize
  3. 在每次循环中,使用 array_slice 函数获取当前批次的数据子集 $batchData
  4. 尝试将 $batchData 中的数据保存到数据库中。如果发生异常,捕获并处理错误。
  5. 继续下一次循环,直到处理完所有数据。

通过这种方式,可以控制每次保存的数据量,从而降低内存和数据库资源的使用。

请注意,需要根据实际环境和需求调整 $batchSize 的值,以找到最佳的性能平衡点。



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

标签:数据,batchData,batchSize,内存,th,100,PHP,data,占用
From: https://www.cnblogs.com/lovebing/p/17932534.html

相关文章

  • PHP查询内存占用函数
    PHP查询内存占用函数memory_get_usage()在PHP中,包括ThinkPHP框架中,直接查询一个数组占用的内存大小可以使用memory_get_usage()函数。这个函数返回当前PHP脚本消耗的内存总量(以字节为单位)。以下是一个简单的示例,展示如何在ThinkPHP中获取一个数组占用的内存大小://在ThinkPHP......
  • 短小精悍(5) - Rust内存清零库zeroize介绍
    今天带来的是一个“短小精悍”的库:zeroize。zeroize可以在确保不被编译器优化的前提下安全高效地清空一段内存,适合在保密应用内使用。用法zeroize的核心用法很简单:usestd::string::String;usezeroize::Zeroize;fnmain(){letmutuser_password=String::from("qw......
  • php语法随笔
    域操作符双冒号::,不创建对象调用类中的常量、变量和方法构造方法:void__construct(变量1,变量2,)继承:先查找子类构造方法,若无调用父类的构造方法,php只支持单继承(只有一个父类)$this:在类内部使用,代表本身::(双冒号),parent(类内部使用,调用父类成员常量、变量和方法),self(类内部......
  • PHP 处理菜单分级树状结构
    <?php//原始数组$originalArray=[0=>["id"=>1,"parent_id"=>0,"name"=>"首页","name_id"=>"1"],1=>["id"=>2,"parent_id"......
  • 初识php之 nginx + php
    下载php:http://windows.php.net/download/  添加环境变量:配置php.ini文件如果没有php.ini文件则可以复制php.ini-development文件重命名为php.ini文件 找到doc_root修改为项目文件夹注意不要用反斜杠作为路径分隔符  检查extension_dir对应php下面的ext文件......
  • 一文真正掌握内存屏障memory_barrier及其用途
    在linux源码中经常遇到__asm__函数。它其实是函数asm的宏定义#define__asm__asm,asm函数让系统执行汇编语句。__asm__常常与__volatile__一起出现。__volatile__限制编译器不能对下面的汇编语句进行优化处理。现代cpu通常具有多级缓存,寄存器、一级、二级、三......
  • 如何处理Linux系统中内存不足的问题
    在Linux系统中,如果遇到内存不足的问题,可以尝试以下方法进行处理:1.通过命令`free-m`查看当前Linux系统的内存使用情况,包括总内存数、已使用的内存数和空闲的内存数。这样可以对系统的内存状况有一个直观的了解。2.找出占用内存过高的进程。可以使用`top`命令查看内存占用情况,......
  • centos 查看 某个应用所占用的内存大小
    要查看某个应用程序所使用的内存大小,可以使用以下步骤在CentOS上进行:打开终端,并登录到CentOS服务器。使用ps命令结合grep过滤器来查找特定应用程序的进程ID(PID)。假设要查找名为"myapp"的应用程序,可以运行以下命令:psaux|grepmyapp这将显示包含"myapp"关键字......
  • break 或 continue 循环函数,使用some同forEarch一样,但是直到找到就不继续往下循环,节省
    停止循环是循环中一个常见的需求。使用for循环我们可以用break提前结束循环。consta=[0,1,2,3,4];for(vari=0;i<a.length;i++){if(a[i]===2){break;//stoptheloop}console.log(a[i]);}//>0,1另一个常见的需求使我们需要直接取......
  • 磁盘调度算法、虚拟内存、抖动(颠簸)、堆栈访问速度、内存分配、内存交换、编码(ASCII、U
    常见的几种磁盘调度算法:读写一个磁盘块的时间的影响因素有:......