return 后,会自动释放资源吗? return只是返回!要清空结果集就要关闭result 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那return之后,代码都不执行了,怎么办? 提前关闭? return $result;之后,不但结果不会被注销掉,调用db_execute函数的部分,还可以重复使用return之后$result中的内容 那在别的函数里用完return返回的$return时,注销掉,那么do_execute里的结果集还有吗? 楼主,肯定会注销掉,你都执行了mysql_close,关闭了数据库链接,之前那个$result是一个资源变量(可以讲是一串Resource的字符,而不是真正的结果集)。 楼主试一下,去掉mysql_close那行代码 释放资源由于 PHP4 Zend 引擎引进了资源计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。由此原因,很少需要用某些 free-result 函数来手工释放内存。 注: 持久数据库连接比较特殊,它们不会被垃圾回收系统破坏执行完db_execute然后关闭数据库吧 函数是这样写的function showproduct(){ $result=db_execute("select * from product"); echo '<table border="1">'; while($row=mysql_fetch_array($result)){ echo '<tr><td>'.$row['subject'].'</td>'; echo '<td>'.$row['author'].'</td></tr>'; //这里还输出很多 } echo '</table>'; mysql_free_result($result);//释放结果集}function db_execute($query){//连接数据库$con=mysql_connect("localhost", "laya168", "laya168") or die("Could not connect<br />"); mysql_select_db("laya",$con); //执行查询$result=mysql_query($query) or die("select faild");mysql_close($con);return $result;}在showproduct()执行后,释放了结果集,那么这个$result在do_execute里还存在吗? do_execute中的$result变量跟do_execute共存,如果do_execute没了,do_execute中的$result也就没有了。但是,$result所对应的结果集,在mysql_free_result之前不会消失,会一直停留在内存之上以待其他成员调用。 o~ 也就是说在showproduct()中的结果集在内存里一直指向do_execute里的结果集.直到mysql_free_result后才会释放吗? PHP5以上版本,do_execute里的结果集在以下两种情况会被释放1.也就是你用的mysql_free_result之后2.整个程序中,没有任何一个变量参照结果集所占用内存的地址的情况下,Zend引擎会自动释放 中文乱码问题:帮忙看一下是哪里出错了,谢谢了 php数组搜索算法 如何匹配多个关键字? 谁能提供下翻页的思路 在学习php的同学有多少人会C语言呢? 很简单的问题,到底哪里出问题了? 上传"中文名"文件的问题 怎么计算一个人的年龄? 问一个 英文的问题 简单的问题! 权限管理问题,感觉矛盾! php中如何配置类似于iis中的虚拟目录
那在别的函数里用完return返回的$return时,注销掉,那么do_execute里的结果集还有吗?
由于 PHP4 Zend 引擎引进了资源计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。由此原因,很少需要用某些 free-result 函数来手工释放内存。
注: 持久数据库连接比较特殊,它们不会被垃圾回收系统破坏执行完db_execute然后关闭数据库吧
$result=db_execute("select * from product");
echo '<table border="1">';
while($row=mysql_fetch_array($result)){
echo '<tr><td>'.$row['subject'].'</td>';
echo '<td>'.$row['author'].'</td></tr>';
//这里还输出很多
}
echo '</table>';
mysql_free_result($result);//释放结果集
}function db_execute($query){
//连接数据库
$con=mysql_connect("localhost", "laya168", "laya168") or die("Could not connect<br />");
mysql_select_db("laya",$con);
//执行查询
$result=mysql_query($query) or die("select faild");
mysql_close($con);
return $result;
}
在showproduct()执行后,释放了结果集,那么这个$result在do_execute里还存在吗?
但是,$result所对应的结果集,在mysql_free_result之前不会消失,会一直停留在内存之上以待其他成员调用。
do_execute里的结果集在以下两种情况会被释放
1.也就是你用的mysql_free_result之后
2.整个程序中,没有任何一个变量参照结果集所占用内存的地址的情况下,Zend引擎会自动释放