Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 清理资源_Php_Performance - Fatal编程技术网

Php 清理资源

Php 清理资源,php,performance,Php,Performance,是否可以清除PHP中的所有资源 我知道你可以用 使用unset,您可以轻松地清除这些资源 但这对我来说还不够。我有一个脚本运行了很长时间(~1h 30m)来执行许多函数。。但是,在执行过程中,脚本收集的信息不再重要。。该脚本导出产品,每个产品的容量约为0.2MB-0.5MB(3200个产品) 这意味着超过600mb的内存使用量。我尽可能地优化了脚本,但我没有把它缩小 我可以通过或获取所有包含的文件;是否可以清除这些信息?删除类(除了一些必需的类,如autoloader类)或其他包含的文件,以便释

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

我知道你可以用 使用unset,您可以轻松地清除这些资源

但这对我来说还不够。我有一个脚本运行了很长时间(~1h 30m)来执行许多函数。。但是,在执行过程中,脚本收集的信息不再重要。。该脚本导出产品,每个产品的容量约为0.2MB-0.5MB(3200个产品)

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

我可以通过或获取所有包含的文件;是否可以清除这些信息?删除类(除了一些必需的类,如autoloader类)或其他包含的文件,以便释放更多RAM

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

也许这是一个愚蠢的问题,但我很高兴看到每一个提示都能提高PHP脚本的性能


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

问题不在于变量,而在于算法

在我看来,脚本将所有值累积到一个大的“产品对象”数组中,该数组将在导出的文件中序列化


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

对于清除资源/内存,您有很多建议:

变量的
unset()

mssql\u free\u结果
for SQL

memory\u get\u usage()
获取当前分配给PHP脚本的内存量(以字节为单位)

等等


如果将所有内容混合使用,可以减少内存/ressource。

我们有一个脚本,它消耗了高达2GB的内存,并且疯狂地泄漏了内存(它使用了1.1条原则)

unset()之后,我们尽可能多地将
gc\u enable()
添加到脚本顶部,并在战略位置添加
gc\u collect\u cycles()


这确实有助于回收一些已使用的内存,但确实会将脚本速度降低一小部分。

垃圾收集器通常足以释放任何未使用的引用,特别是因为它可以检测PHP5.3之后的循环引用。您真的达到了600MB吗?您是否在变量中存储sql记录之类的数据?您可以尝试写入磁盘,然后取消设置。从声音中,您希望清除PHP脚本中间的所有资源。我的建议是:不要。这听起来可能会导致可怕的事情(特别是因为脚本可能仍在处理这些事情)。相反,您应该进入代码,让它关闭不再需要的每个资源。您应该如前所述,将数据导出到临时文件,并清除关于文件中内容的所有内存。最后,打开每个文件并合并它们。。。如果需要,请使用不同的脚本。我使用的是旧的magento版本,目前不可能更新该版本,并且需要花费太多的精力来更新该版本,以便所有内容都能正常工作。。我不想,我们也没有时间,改变magento的核心功能,让它更快。。所以我希望有人知道这个问题