【发布时间】:2009-07-18 11:56:32
【问题描述】:
简单地说,我是一个相当新的 PHP 编码器,我想知道是否有人可以指导我找到提高代码性能以及阻止那些讨厌的内存泄漏的最佳方法,我的主机就是其中之一'没有安装 APC 或类似设备,所以都必须手动编码 -_-
【问题讨论】:
标签: php performance memory-leaks
简单地说,我是一个相当新的 PHP 编码器,我想知道是否有人可以指导我找到提高代码性能以及阻止那些讨厌的内存泄漏的最佳方法,我的主机就是其中之一'没有安装 APC 或类似设备,所以都必须手动编码 -_-
【问题讨论】:
标签: php performance memory-leaks
我认为普通的内存泄漏(例如忘记处理对象或字符串)在 PHP 中并不常见,但资源泄漏通常是常见的。我遇到了以下问题:
数据库连接——你真的应该打电话给pg_close/mysql_close/etc。当你完成连接时。虽然我认为 PHP 的连接池可以缓解这种情况(但可能有其自身的问题)。
图片——如果你使用gd2扩展打开或创建图片,你需要image_destroy这些,否则它们会永远占用内存。而且图像的数据量往往很大。
请注意,如果您的脚本作为纯 CGI(无 HTTP 服务器模块)运行,那么当脚本退出时资源将被有效地清理。但是,在脚本运行时可能仍然存在内存问题,尤其是在图像的情况下,在单个脚本执行中执行许多操作并不少见。
【讨论】:
一般来说,php 脚本不会泄露内存。 php 运行时管理其脚本的所有内存。脚本本身可能会泄漏内存,但这会在 php 进程结束时被回收。由于 php 主要用于处理 http 请求,并且这些请求通常运行时间很短,因此如果您正在泄漏一些内存,这不会成为问题。因此,只有在您将 php 用于非 http 任务时,内存泄漏才真正关心您。与内存使用相比,性能应该是您更关心的问题。使用诸如xdebug 之类的工具来分析您的代码。
【讨论】: