我多年来一直在阅读有关编写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'];
}
答案 0 :(得分:2)
当你对内存泄漏进行100%完美展望时,有很多事情需要考虑。我所做的是遵循编码标准和模式。如果我进入内存泄漏问题,即使在那之后,我应该使用profiling或XDebug等Kcachegrind工具解决这个问题。
像Exception safety这样的事情应该得到很好的维护
您可以使用memory_get_peak_usage()
,memory_get_usage()
等工具来发现罪魁祸首。您可以查看此post regarding Memory Manager。
脚本如PHP这样的语言使用自动垃圾收集,例如你不必自己dealloc。垃圾收集器为你做(使用引用计数)。但如果您想自己动手,可以使用unset()
。但有些情况已被报道,即使未设置也不适合你。关于这一点的一些漏洞也有报道。 bug#33945
bug#33487
a:A
和b:B
都有循环引用时, reference counting
会遇到问题,因此您需要一个实例来获取ownership
并破坏引用的对象要面对这个问题的圈子。
strtotime() memory leak bug#47285
您在编辑中发布的代码不应该担心内存泄漏。我会在评论中引用@GolezTrol
脚本分配的所有内存在终止后立即释放, 这是在每个请求的最后。你真的不应该 除非您正在构建特殊脚本或拥有网站 负载很高。如果你有这样的问题, 你可能没有,所以不要担心。
答案 1 :(得分:0)