一、程序中有很多局部变量(或者是全局变量或静态变量),应该是每使用完一个变量后就unset()它,还是坐等垃圾回收?
二、比如我的程序中有个局部变量$a='aa',我刷新一次网页,服务器要为$a分配内存,要是再刷新一次,服务器再次为$a分配内存。
    我想知道第二次分配内存时是否自动释放第一次分配的内存空间?
三、如果这个变量是全局变量,那么问题2的答案又是什么?
小弟学PHP时间不长,请各位师傅指教!

解决方案 »

  1.   

    php 中的全局变量是相对类、函数说的。php 脚本的全局和局部仅仅是在一次执行中说的,php 自身不存在类似 asp 的 application 的全局的变量。
    也就是说当前执行的脚本中的所有的变量、对象所用资源在脚本结束后都将被回收。
    在 http 调用中,由于 http 本身是无状态的,也就是说不存在 两次调用只执行一次脚本的情况。所以,每次执行,所有的变量、对象都会重新初始化,执行完毕都被回收。
      

  2.   

    在脚本执行完后会回收所有资源 所以一般情况下不需要特意的销毁变量但资源类型的变量在确认不需要以后应该释放的 例如数据库连接 打开的文件 等等
    一定要确定不再需要了再释放 连接两次的更慢例如在使用SMARTY的时候 逻辑与表现分离
    在逻辑部分传递变量给SMARTY之后 应该释放数据库连接 打开的文件 实例化的比较复杂的类 SOCKET 这类东东
    因为SMARTY所占的比重大概能达到50%而这50%是不需要前面所提到的那些东西对于$a = 'a';这类东西 不应该特意的销毁 unset()本身也需要消耗资源
      

  3.   

    我同意2楼和3楼的说法,如果不是很有必要的话不要刻意去使用unset(),一则没必要,二刚消耗资源.