在下面的场景中使用substr的时候, 有时候会报超出内存fatal error ,当curl读取的内容过大的时候

            $header_size = curl_getinfo($curl_handle, CURLINFO_HEADER_SIZE);
$this->response_headers = substr($this->response, 0, $header_size);
$this->response_body = substr($this->response, $header_size);
$this->response_code = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
$this->response_info = curl_getinfo($curl_handle);

用substr切分curl返回的内容 , 分出header头和body体

1. 测试一下:

<?php
$start=memory_get_usage();
$str="123";
var_dump(memory_get_usage()-$start);
//$a=substr($str,0,1);
$a=$str;
var_dump(memory_get_usage()-$start-24);
$b=$str;
//$b=mb_substr($str,1);
var_dump(memory_get_usage()-$start-24);
$c=$str;
//$b=mb_substr($str,1);
var_dump(memory_get_usage()-$start-24);

这个变量赋值,占48字节

2.使用substr切分后

<?php
$start=memory_get_usage();
$str="123";
var_dump(memory_get_usage()-$start);
//$a=substr($str,0,1);
$a=$str;
var_dump(memory_get_usage()-$start-24);
//$b=$str;
$b=substr($str,0,1);
var_dump(memory_get_usage()-$start-24);
//$c=$str;
$c=substr($str,1);
var_dump(memory_get_usage()-$start-24);

切分后赋值,占到了92字节 和 96字节 , 比原变量涨了一倍多

  

  

  

[PHP] substr占用内存谨慎使用的更多相关文章

  1. [20191115]oracle实例占用内存计算.txt

    [20191115]oracle实例占用内存计算.txt --//以前学习oracle数据库时,总想了解实例占用内存多少,我曾经在一些会议底下问过一位高手,对方说计算这个相对很难,许多东西是共享的.- ...

  2. 如何解决audiodg占用内存高(停止与重启audiodg服务)

    window7电脑audiodg.exe进程占用内存很高 首先想到的办法是结束该进程,于是在任务管理器里结束进程后,内存是释放了,但是发现发现电脑没有声音 去到电脑的system32目录下双击audi ...

  3. Android Bitmap占用内存计算公式

    Android对各分辨率的定义 当图片以格式ARGB_8888存储时的计算方式 占用内存=图片长*图片宽*4字节 图片长 = 图片原始长 (设备DPI/文件夹DPI)  图片宽 = 图片原始宽(设备D ...

  4. 关于Java占用内存的研究

    最近对程序占用内存方面做了一些优化,取得了不错的效果,总结了一些经验简要说一下,相信会对大家写出优质的程序有所帮助下面的论述针对32位系统,对64位系统不适用,后叙 经常你写了一个程序,一测试,功能没 ...

  5. iOS图片加载到内存中占用内存情况

    我的测试结果: 图片占用内存   图片尺寸           .png文件大小 1MB              512*512          316KB 4MB              10 ...

  6. 获取本机内存使用信息、DataTable占用内存空间

    相当于windows系统中的任务管理器,功能是通过系统的API实现的本机的监视,代码如下 using System;using System.Collections.Generic;using Sys ...

  7. Android中一张图片加载后所占用内存大小的获取与测试

    Android程序中一旦加载的图片比较多,就有可能出现Out of Memory而导致程序崩溃.这个一方面是因为Android系统本身对于每个单独的进程有内存大小的限制(有16M,64M,128M,2 ...

  8. C# Winform应用程序占用内存较大解决方法整理(转)

    原文:http://www.jb51.net/article/56682.htm 背景: 微软的 .NET FRAMEWORK 现在可谓如火如荼了.但是,.NET 一直所为人诟病的就是“胃口太大”,狂 ...

  9. 【转载】Unity 优雅地管理资源,减少占用内存,优化游戏

    转自:星辰的<Unity3D占用内存太大的解决方法> 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D  ...

随机推荐

  1. Linux下环境变量(.bash_profile和.bashrc的区别)

    在linux系统下,如果下载并安装了应用程序,在启动时很有可能在键入它的名称时出现"command not found"的提示内容.如果每次都到安装目标文件夹内,找到可执行文件来进 ...

  2. Vysor

    官网:http://www.vysor.io/ Vysor用 PC远程控制投影安卓手机/平板工具 Vysor 是一个免费的google浏览器插件. 它可以让你在pc上控制你的Android手机.平板等 ...

  3. prometheus operator的深度好文

    转: https://www.servicemesher.com/blog/prometheus-operator-manual/

  4. 动态内存的分配(new delete malloc free)

    new和malloc的区别是什么?-new关键字是C++的一部分,在所有的C++编译器中都被支持-malloc是由C库提供的函数,在某些系统开发中是不能调用的-new以具体类型为单位进行内存分配-ma ...

  5. calcifications loss

    import keras import tensorflow as tf from keras.models import Model from keras import backend as K # ...

  6. javaScript___计算时间前一天和后一天案例

    1.  HTML 排版 <button onclick="anteayer()">前天</button> <button onclick=" ...

  7. 42 在Raspberry Pi上安装dlib表情识别

    https://www.jianshu.com/p/848014d8dea9 https://www.pyimagesearch.com/2017/05/01/install-dlib-raspber ...

  8. B1013(通过)

    这种方法是采用B1017的那个求素数的算法,并且送一个比较大的数值当作上线(20000),也可以进一步压缩,但是这个数已经够用了,就没有再试了. python方便是方便,但是真的慢 def isPri ...

  9. T-SQL(SQLSERVER)

    使用自定义类型名 CREATE DATABASE Student GO USE Student GO Exec sp_addtype char20,'varchar(20)','null' GO 在库 ...

  10. 修改kile工程名字(转)

    假设原来的工程文件名是first,要改成second1.在工程文件目录中,将first.uvopt和first.uvproj名字改成second.uvopt和second.uvproj.2.其他fir ...