总而言之依照情况而定web程序在大多数情况下,需要重复操作n种处理,
数据库建立连接之后,通常不需要马上断开,但是注意,连接只能建立一次。
不需要特别的释放,但是通常需要注意事务处理。
连接、释放的次数太多,反而影响处理速度。对于各种数组也是,通常把释放内存的工作交给Zend引擎就可以了,因为一个变量有一个特定的有效区域,Zend应该可以自己判断。
不过,有些变量是全局共享的,就不可以随便释放了。

解决方案 »

  1.   

    不一定的,如果不主动释放,等着Zend去自己分析才释放,始终是有点错误,比如连接数太大,服务器的负载比较重,当然就有手动了,还有有时候运行PHP会有意想不到的严重错误,那Zend不一定会释放。“数据库建立连接之后,通常不需要马上断开,但是注意,连接只能建立一次。”这好像不是的,你建立的是永久连接(pconnect)就是一次性的,如果是平时的连接,怎么可能只能建立一次,不是这样的,用mysql_connect连接的是暂时性的,处理完后是断开连接的。“连接、释放的次数太多,反而影响处理速度。 ”这逻辑上认为好像不是,交给Zend解释器去处理,始终都要释放的吧。
      

  2.   

    请问你如何释放内存?
    $xx=null就叫释放吗?哪里的规定?
    写web程序,如何管理内存?很想知道用PHP有效管理内存的方法。
    释放、释放,一个变量,因为它占用空间太大,就不允许重复使用了吗?访问量小的网站,允许web程序直接操作针对数据库的连接/切断,但是,访问量大的网站,数据库连接都是用连接池的.
    数据库的连接/切断在外部统一管理,PDO具备这种功能。
    真的难以想象,一篇小文章,一分钟内如果有一百个人访问,就要连接/断开数据库一百次?
      

  3.   

    1、“$xx=null就叫释放吗?哪里的规定?”这个PHP官方网站的PDO介绍是这样写的,关闭就是用这样方法;
    2、“真的难以想象,一篇小文章,一分钟内如果有一百个人访问,就要连接/断开数据库一百次?”如果是这样的话,作为管理员肯定会使用永久连接,不会使用临时连接,当然如果这样,更需要释放资源了,mysql_free_result函数就是这样,如果不主动,Apache最终会负载过重而终止服务器,所以主动释放是很必要的,也是写程序的良好习惯。
      

  4.   

    具体在什么地方有记载?
    php中倒是有用来废弃变量的unset函数,但是,就算unset,被参照的内容是否被废弃还要依型而易
    管理员使用什么永久连接?内部程序跟服务器管理员挨得着边吗?
    至于mysql_free_result这是特殊的情况,因为mysql_query返回的是resource,使用resource的时候需要注意恰当的关闭,但这也不是绝对的。
    php4以后版本,zend引擎对于resource具有类似于java垃圾处理机制的管理方法,如果resource不被任何变量引用,将会自动废弃相应的数据并释放内存。