我一直在寻找通过我的代码,并读取它recommened使用mysqli_free_result
时,不再需要你的结果对象。 但看到每个查询outputed到后$result
整个脚本变量反反复复,我想知道如果mysqli_free_result
真的是必要的。 似乎每一个查询运行时间像$result
变量已经被擦拭干净,并设置为一个新的结果。 如果有人对此有任何输入只是好奇。
Answer 1:
其实这是必要的,因为它可能使重负载到服务器时,很多请求制成。 所以,最好,你应该使用它。
当你知道其他一些情况下,该查询被其它查询,所以你不必使用它。
Answer 2:
这是从来没有绝对必要的,但它是很好的做法,以保持您所使用资源的眼睛,知道,当你不需要他们了。
这是相当最小的努力中的代码,额外的行下降,所以我只想每一个你和一个结果集结束的时间做到这一点。 它具有这就很清楚的人阅读你的代码,当你与资源完成额外的奖励。
Answer 3:
这是混乱的代码。 这是不是基于功能的原因的下降mysqli_free_result
,但在我看来,一个正当的理由。 考虑下面的代码片段。
你不会节省大量的内存释放取回一个单记录的查询。 跳过它们,除非你知道他们是必要的-当一些脚本使用更多的内存比你可分配(应该是很少)。
释放这些资源的另一个原因是在打开的文件句柄量的操作系统级限制。 不过,我认为所有问题都要经过这一个连接或一个文件句柄或插座。
// Share PDF
if ($_REQUEST['do'] == 'sharePDF') {
- $sql = "SELECT * FROM c_document WHERE doc_id = $doc_id";
- $res = mysql_query($sql);
- $doc_row = mysql_fetch_assoc($res);
- mysql_free_result($res);
- $d_name = $doc_row['d_name'];
- $templ_id = $doc_row['templ_id'];
- $sql = "SELECT * FROM c_template WHERE templ_id = $templ_id";
- $res = mysql_query($sql);
- $templ_row = mysql_fetch_assoc($res);
- mysql_free_result($res);
+
+ $doc_row = qAssocOne("SELECT * FROM c_document WHERE doc_id = $doc_id");
+ $templ_row = qAssocOne("SELECT * FROM c_template WHERE templ_id = {$doc_row['templ_id']}") ;
+
$params = array(
'share_pdf_core_id='.$templ_row['share_pdf_core_id'],
'share_pdf_create_id='.$templ_row['share_pdf_create_id'],
@@ -193,7 +187,7 @@ if ($_REQUEST['do'] == 'sharePDF') {
'doc_id='.intval($_REQUEST['doc_id']),
'pdf1='.urlencode($_REQUEST['pdf']),
'pdf2=',
- 'name='.urlencode($d_name),
+ 'name='.urlencode($doc_row['d_name']),
'select_output='.$templ_row['select_output']
);
$params = join("&",$params);
减去线在我看来绝对的垃圾; 十行VS两项。 请...
在回答你的常识评论:
任何人都不应该关心的功能是什么。 它说明了一个点。 此外,该名给你的提示。 Q
为查询, Assoc
用于抓取(水合物)的散列,而不是数字数组。 One
一个记录,而不是一组记录。 如果你真的无法猜测它做什么,在网上搜索。 该代码是可用的。 首先击中谷歌。
这是不无关系。 很多PHP代码如下所示。 我的观点在回答说明。 因为结算结果集有一行也救不了你多少内存这是不必要的。 因为它杂波的代码和混淆的意图或业务逻辑是不必要的。
有-不错天
文章来源: mysqli_free_result necessary?