共享文件,按功能分大类,好维护,好修改!
php内存占用过多主要是程序问题,比如把大数组,大数据读入进行处理!
你首页需要4M,那么256M也实在太少了点,静态化吧
vps?你可以在/etc/php5/fpm/poold目录下发现这些低效的配置选项。举例来说,以下是我的服务器(当然不是目前这个站点)上的那些低效选项:
; Choose how the process manager will control the number of child processes
pm = dynamic
pmmax_children = 75
pmstart_servers = 10
pmmin_spare_servers = 5
pmmax_spare_servers = 20
pmmax_requests = 500
那台服务器是一台DigitalOcean Droplet,配置512M内存。它上面运行了一个新网站,即使完全空闲时,也必须要靠交换内存才能避免僵死。执行top命令显示了服务器上占用内存最多的进程。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13891 cont 20 396944 56596 33416 S 00 113 :1405 php5-fpm
13889 cont 20 396480 56316 32916 S 00 112 :1767 php5-fpm
13887 cont 20 624212 55088 32008 S 00 110 :1402 php5-fpmPHP性能优化过程中需要获取PHP内存消耗,使用memory_get_usage()函数可获取当前的内存消耗情况,函数使用简单,这里讨论一下memory_get_usage()函数的用法与实例
三,基础用法与实例
1,获取当前的内存消耗量
复制代码代码如下:
<php
echo memory_get_usage();
$var = str_repeat("liuhui", 10000);
echo memory_get_usage();
unset($var);
echo memory_get_usage();
>
分别输出:62328 122504 62416
说明:memory_get_usage()函数输出的数值为bytes单位
2,格式化memory_get_usage()输出
复制代码代码如下:
<php
function convert($size){
$unit=array('b','kb','mb','gb','tb','pb');
return @round($size/pow(1024,($i=floor(log($size,1024)))),2)' '$unit[$i];
}
echo convert(memory_get_usage(true));
>
输出:256 kb
3,自定义函数获取数组或变量值大小
复制代码代码如下:
<php
function array_size($arr) {
ob_start();
print_r($arr);
$mem = ob_get_contents();
ob_end_clean();
$mem = preg_replace("/\n +/", "", $mem);
$mem = strlen($mem);
return $mem;
}
$memEstimate = array_size($GLOBALS);
>
1 可以修改配置文件 phpini 中的 memory_limit =128M
把128改为256或更大
记得要重新启动, 可以通过查看 phpinfo 的 memory_limit 来看有没有生效
2 直接在php文件中用 ini_set修改临时内存
只要在php文件写入:
ini_set('memory_limit', '1024M');就能临时改变PHP内存的大小
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)