好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php如何控制内存 php如何控制内存大小

很多站长朋友们都不太清楚php如何控制内存,今天小编就来给大家整理php如何控制内存,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 PHP程序,如何监控内存情况 2、 PHP管理内存函数 memory_get_usage()使用介绍 3、 如何增加PHP的内存memory PHP程序,如何监控内存情况

看到有人写透视宝做php监控的原理图,跟你分享下。我估计大家做的方式都是差不多。

PHP运行支撑的ZendEngine早在设计过程中已经预留了丰富的Hook,可以有效干涉处理过程中的几个关键步骤。利用了以下几个Hook,就能方便的获取数据:

1.           zend_compile_file zend_compile_string

加载分析文件或字符串,本身就会造成非常大的IO,如果过多地执行加载,无疑会造成内存和CPU的消耗.通过这两个hook,可以取得文件名、执行行数、使用内存和CPU占用时间。

2.           zend_execute zend_execute_internal

通过这两个hook的使用,我们可以准确地分析得出一个PHP应用中的类调用、方法调用、方法参数、内存占用和CPU占用,加以分析,便可以准确得出应用系统运行过程中的方法运行栈,API调用地址,SQL语句,CacheKey以及Cache命中等关键信息。

3.           zend_throw_exception_hook

利用异常钩子,可以准确地得到应用系统运行过程中出现的异常信息,当然包括异常发生的类\方法位置,参数,异常code和异常message。

4.           zend_error_cb

错误钩子则更加直接,可以准确得到系统运行过程中出现的任何一个warning,代码错误或语法错误。

PHP管理内存函数 memory_get_usage()使用介绍

下面是PHP

memory_get_usage()使用示例:

复制代码

代码如下:

echo

memory_get_usage(),

'<br

/>';

//143952

$tmp

=

str_repeat('',

4000);

echo

memory_get_usage(),

'<br

/>';

//232048

unset($tmp);

echo

memory_get_usage();

//143952

上面的程序后面的注释代表了它们的输出(单位为

byte(s)),也就是当时

PHP

脚本使用的内存(不含

memory_get_usage()

函数本身占用的内存)

由上面的例子可以看出,要想减少内存的占用,可以使用

PHP

unset()

函数把不再需要使用的变量删除。类似的还有:PHP

mysql_free_result()

函数,可以清空不再需要的查询数据库得到的结果集,这样也能得到更多可用内存。

PHP

memory_get_usage()还可以有个参数,$real_usage,其值为布尔值。默认为

FALSE,表示得到的内存使用量不包括该函数(PHP

内存管理器)占用的内存;当设置为

TRUE

时,得到的内存为包括该函数(PHP

内存管理器)占用的内存。

所以在实际编程中,可以用PHP

memory_get_usage()比较各个方法占用内存的高低,来选择使用哪种占用内存小的方法。

常用的检测:

用microtime函数就可以分析程序执行时间

memory_get_usage可以分析内存占用空间

SQL的效率可以使用打开慢查询查看日志分析

SQL

找到有瓶颈的使用EXPLAIN

来分析

如何增加PHP的内存memory

运行PHP程序,通常会遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的错误, 这个意味着PHP脚本使用了过多的内存,并超出了系统对其设置的允许最大内存。解决这个问题,首先需要查看你的程序是否分配了过多的内存,在程序没有问题的情况下,你可以通过一下方法来增加PHP的内存限制(memory_limit)。

检查php的内存限制值

为了查看这个值,你需要建立一个空的php文件,比如view-php-info.php。然后将一下代码贴到里面。

<?php phpinfo(); ?>

将这个脚本放到你的Web服务器上,然后在浏览器中调用它。这时你可以看到你的PHP环境配置的信息,其中有一部分是关于“memory_limit”的,

注:你可以用这种方法来查看php的其他参数设置,不仅仅是memory_limit

memory_limit应该设为多少?

这个完全依赖于你的应用的要求。比如Wordpress,运行起核心代码需要32MB。Drupal 6则要求这个值最小为16MB,并推荐设置为32MB。如果你又安装不少的插件(plugins),尤其是那些要进行图像处理的模块,那么你可能需要128MB或更高的内存。

如何设置memory_limit

方法1:.htaccess

说明: 这种方法只有在php以Apache模块来执行时才生效。 在你的网站的根目录下找到“.htaccess”文件,如果没有,可以自己创建一个。然后把以下配置放入其中php_value memory_limit 128M ; 可以将128M改为任何你想设置的值

方法2:运行时修改php的内存设置

在你的php代码中增加以下命令行即可。

ini_set('memory_limit','128M');

memory_limit修改失败

方法3:php.ini

最简单或常用的方法是修改php.ini

1.首先找到对你的网站生效的php.ini文件 由于有多个地方都可以设置php的参数,找到正确的配置文件,并进行更改是首先要做的一步。如果你上面的方法建立了php文件来查看其配置参数,则你可以找到“Loaded Configuration File”这一项,以下是个例子:

对于Linux用户,你可以通过执行“php -i | grep Loaded Configuration File”来找到对应的配置文件。而Windows用户,你可以尝试修改你的php安装目录下的php.ini。

2.编辑php.ini 在php.ini中,找到“memory_limit”这一项,如果没有,你可以在文件的尾部自己增加这个参数。以下是一些设置范例

memory_limit = 128M ; 可以将128M改为任何你想设置的值

保存文件

3.重启web 服务器 如果是web服务器使用Apache, 则执行:

httpd restart

有些情况下,你可能不被允许私修改php.ini。比如如果你购买了虚拟主机服务,但是你的服务商确禁止你修改这个文件。那么,你可以需要考虑用其他方法来增加memory_limit的值。

如果你使用虚拟主机,有可能会出现memory_limit的值修改失败。这个需要联系你的服务商帮你处理。

关于php如何控制内存的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php如何控制内存 php如何控制内存大小的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did194930
更新时间:2023-04-26   阅读:22次

上一篇: php请求某个地址 php获取请求方的域名

下一篇:运城php接口对接 php接口编程

相关资讯

最新资料更新

  • 1.php瀑布流响应 html 瀑布流
  • 2.整站系统php源码 php企业网站整站源码
  • 3.php解析img PHP解析器
  • 4.php仿应用商店 php android 应用
  • 5.php框架制作教程外包 怎么做php框架
  • 6.php如何制作游戏 php游戏源码
  • 7.php空间景安 php 免费空间
  • 8.php事务的隔离级别 php事务处理
  • 9.php数据分数排序 php实现积分排行榜
  • 10.php微信爬虫 微信爬虫访问是什么
  • 11.php判断08数字 php 判断数字
  • 12.php基于iis php+iis
  • 13.php复杂语法 php基本语法
  • 14.php中table行宽 php网页表格
  • 15.phpapp页面 php app
  • 16.php_syntax的简单介绍
  • 17.php视频太大怎么传输 php上传视频压缩
  • 18.包含catflag.php的词条
  • 19.php匹配尖括号 括号匹配python代码
  • 20.php网络通信 php通信协议

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]