清理资源

时间:2012-08-01 14:46:41

标签: php performance clear

是否可以清除PHP中的所有资源?

我知道您可以使用get_defined_vars获取所有定义的函数 如果没有设置,您可以轻松清除这些资源。

但这对我来说还不够。我有一个脚本运行很长时间(约1小时30分钟)来执行许多功能..但是执行时脚本收集的信息不再重要..脚本导出产品并获得大约0.2MB - 0.5MB产品(3200产品)

这超过600mb的内存使用量。我尽可能地优化了脚本,但是我没有把它缩小。

我可以使用get_included_filesget_declared_classes获取所有包含的文件;是否有可能清除这些信息?删除类(除了一些必需的自动加载器类)或其他包含的文件,以便我可以释放更多的RAM?

或者你知道在执行时优化服务器使用的其他方法吗?

也许这是一个愚蠢的问题,但我很乐意为每个提示改进PHP脚本的性能。

脚本环境的信息:该脚本在旧的Magento 1.4版本上运行,该版本在缓存和性能方面存在巨大问题;目前无法对更新版本进行更新。

3 个答案:

答案 0 :(得分:2)

你有很多关于明确资源/记忆的功能:

unset()表示变量

SQL

mssql_free_result

memory_get_usage()表示当前正在分配给PHP脚本的内存量(以字节为单位)。

... ETC

如果混合所有内容,可以减少内存/资源。

答案 1 :(得分:2)

我们有一个脚本消耗了高达2GB的内存,并且像疯了一样泄露了内存(它使用了Doctrine 1.1)。

尽可能在unset()ing之后,我们将gc_enable()添加到脚本的顶部,并在战略位置添加gc_collect_cycles()

这确实有助于回收一些已用过的内存,但确实使脚本减少了一小部分。

答案 2 :(得分:1)

问题不依赖于变量,而是依赖于算法。

In think脚本将所有值累积到一个将在导出文件中序列化的大“产品对象”数组中。

要精通内存,最好在构建之后序列化每个产品,而不是累积所有产品以在序列化之前导出到数组中。