最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

关于PHP进程防止内存溢出的排查

来源:动视网 责编:小采 时间:2020-11-02 18:52:09
文档

关于PHP进程防止内存溢出的排查

关于PHP进程防止内存溢出的排查:PHP进程内存大小是可以设置的,默认在配置文件 memory_limit=128M也可以在程序中动态设置 ini_set('memory_limit', '1024M');这样就设置成1G了。但是一般不会这样设置,毕竟会影响到机器的其他服务。有时候可以排查一下代码,很多时候内存溢
推荐度:
导读关于PHP进程防止内存溢出的排查:PHP进程内存大小是可以设置的,默认在配置文件 memory_limit=128M也可以在程序中动态设置 ini_set('memory_limit', '1024M');这样就设置成1G了。但是一般不会这样设置,毕竟会影响到机器的其他服务。有时候可以排查一下代码,很多时候内存溢


3.遍历赋值其他变量

$arr = range(0, 599999);
echo 'foreach前内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
foreach($arr as $key => $item) {
 $arr[$key] = $item + 1;
 if($item % 100000 == 0) {
 echo 'foreach中内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
 }
}
echo 'foreach后内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';

//输出
/*
foreach前内存:49.9MB
foreach中内存:81.36MB
foreach中内存:84.42MB
foreach中内存:87.47MB
foreach中内存:90.52MB
foreach中内存:93.57MB
foreach中内存:96.62MB
foreach后内存:49.9MB
*/

解决方法,采用引用遍历

$arr = range(0, 599999);
echo 'foreach前内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';

foreach($arr as $key => &$item) {
 $arr[$key] = $item + 1;
 if($item % 100000 == 0) {
 echo 'foreach中内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
 }
}unset($key);unset($item);

遍历完成后记得unset($key);unset($item); 因为$item是对数组最后一个元素的引用,后面如果修改这个变量,会直接修改到数组。

推荐:《PHP视频教程》

文档

关于PHP进程防止内存溢出的排查

关于PHP进程防止内存溢出的排查:PHP进程内存大小是可以设置的,默认在配置文件 memory_limit=128M也可以在程序中动态设置 ini_set('memory_limit', '1024M');这样就设置成1G了。但是一般不会这样设置,毕竟会影响到机器的其他服务。有时候可以排查一下代码,很多时候内存溢
推荐度:
标签: 内存 php 程序
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top