什么是内存吃PHP脚本

时间:2011-10-13 18:24:36

标签: php mysql memory

我多年来一直在阅读有关编写php脚本时节省内存的方法。但是我应该真正关心什么类型的脚本。哪些代码/脚本/调用吃得最多?

修改

这是一个问题,请不要回答问题

修改

这个怎么样?这样的事情会记忆吗?它需要完成,但应该如何解放?

$manufacture = htmlspecialchars($_REQUEST["manufacture"]);
$manufacture = preg_replace("/[^0-9]/","", $manufacture);



$SQL = "SELECT * FROM STORE_MANUFACTURERS WHERE manufacturers_id = '$manufacture'";
$result = mysql_query( $SQL );
while( $row = mysql_fetch_array( $result ) ) {
$manufacturers_name = $row['manufacturers_name'];
}

2 个答案:

答案 0 :(得分:2)

当你对内存泄漏进行100%完美展望时,有很多事情需要考虑。我所做的是遵循编码标准和模式。如果我进入内存泄漏问题,即使在那之后,我应该使用profilingXDebugKcachegrind工具解决这个问题。

Exception safety这样的事情应该得到很好的维护

您可以使用memory_get_peak_usage()memory_get_usage()等工具来发现罪魁祸首。您可以查看此post regarding Memory Manager

脚本如PHP这样的语言使用自动垃圾收集,例如你不必自己dealloc。垃圾收集器为你做(使用引用计数)。但如果您想自己动手,可以使用unset()。但有些情况已被报道,即使未设置也不适合你。关于这一点的一些漏洞也有报道。 bug#33945 bug#33487

a:Ab:B都有循环引用时,

reference counting会遇到问题,因此您需要一个实例来获取ownership并破坏引用的对象要面对这个问题的圈子。

strtotime() memory leak bug#47285

存在一些问题

您在编辑中发布的代码不应该担心内存泄漏。我会在评论中引用@GolezTrol

  

脚本分配的所有内存在终止后立即释放,   这是在每个请求的最后。你真的不应该   除非您正在构建特殊脚本或拥有网站   负载很高。如果你有这样的问题,   你可能没有,所以不要担心。

答案 1 :(得分:0)

任何代码存储数据的地方都会占用内存。

设置的每个变量。

您可以使用memory_get_usage()函数测试您的代码,记录为here