Php 阻止内存泄漏和提高性能的最佳实践

Php 阻止内存泄漏和提高性能的最佳实践,php,performance,memory-leaks,Php,Performance,Memory Leaks,简单地说,我是一个新的PHP程序员,我想知道是否有人可以指导我找到提高代码性能以及阻止那些讨厌的内存泄漏的最佳方法,我的主机是那些没有安装APC或类似软件的主机之一,所以它都必须手工编码--我不认为普通的内存泄漏(比如忘记处理对象或字符串)在PHP中很常见,但资源泄漏通常都很常见。我遇到了以下问题: 数据库连接——当您完成连接时,您应该真正调用pg_close/mysql_close/等等。虽然我认为PHPs连接池可以缓解这一问题(但它本身也会有问题) 图像——如果您使用gd2扩展打开或创建图

简单地说,我是一个新的PHP程序员,我想知道是否有人可以指导我找到提高代码性能以及阻止那些讨厌的内存泄漏的最佳方法,我的主机是那些没有安装APC或类似软件的主机之一,所以它都必须手工编码--

我不认为普通的内存泄漏(比如忘记处理对象或字符串)在PHP中很常见,但资源泄漏通常都很常见。我遇到了以下问题:

  • 数据库连接——当您完成连接时,您应该真正调用
    pg_close
    /
    mysql_close
    /等等。虽然我认为PHPs连接池可以缓解这一问题(但它本身也会有问题)

  • 图像——如果您使用gd2扩展打开或创建图像,您需要
    image\u销毁这些图像,否则它们将永远占用内存。而且图像的数据量往往很大


请注意,如果脚本作为纯CGI运行(没有HTTP服务器模块),则当脚本退出时,将有效地清理资源。但是,在脚本运行期间可能仍然存在内存问题,特别是在图像的情况下,在单个脚本执行中执行许多操作并不罕见。

一般来说,php脚本不会泄漏内存。php运行时管理所有内存r它的脚本。脚本本身可能会泄漏内存,但这将在php进程结束时回收。由于php主要用于处理http请求,并且这些请求通常会运行很短的时间,因此,如果您正在泄漏一点内存,这就不成问题。因此,只有当您将php用于非http任务时,内存泄漏才应该真正引起您的关注。性能应该比内存使用更重要。请使用诸如的工具来分析代码。

尽管我很想使用xdebug,但我确实提到我的主机不允许安装额外的,但谢谢:)我不会在生产环境中安装xdebug。在你的开发人员机器上安装它。我发现在我的进程中有一个漏洞,在脚本退出后内存没有得到回收。当然,很可能是PHP造成的。@Artem:泄漏更可能发生在扩展或链接库中。您应该尝试隔离bug,然后逐个禁用扩展,以找到罪魁祸首。