作者nono5938 (玥乂)
看板PHP
标题[请益] laravel 资料库 要释放res吗?
时间Fri May 5 22:00:10 2017
我google了一下,
别人程式码都没有
free() 或是 close()之类的,
是不用释放资源?
还是他自己会释放啊,
怕会占用我的资源。
-----
Sent from JPTT on my Xiaomi MI 5.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 119.14.168.131
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1493992812.A.598.html
1F:推 hiigara: 是否写习惯C...PHP引擎自己会做记忆体管理,你碰不到 05/06 10:27
2F:→ hiigara: 一般来说Resource Handler在用不到以後会自动被PHP收拾掉05/06 10:30
3F:→ hiigara: 不过DB连线是例外,因为有Persistent Connections 05/06 10:31
我就是想问,
用laravel的function去执行DB指令,
也没看过有人在释放这个资源的啊OAO
不过我想我知道差别在哪了,
用laravel的function输出会直接成为一个array,
php指令输出会以其他方式存在,
大概吧。。。。
※ 编辑: nono5938 (119.14.168.131), 05/07/2017 02:08:27
※ 编辑: nono5938 (119.14.168.131), 05/07/2017 02:11:30
5F:推 hiigara: 「用不到」指的是没有其他东西指到这个变数,这边跟PHP的 05/07 09:52
6F:→ hiigara: 垃圾回收机制绑在一起。一旦PHP认为这个变数可以被GC,就 05/07 09:53
7F:→ hiigara: 会自动把下面的资源放掉,记忆体释放出来。 05/07 09:53
8F:→ hiigara: 所以官方文件「关闭PDO的DB连线」的方式是把pdo设为null 05/07 09:55
10F:→ hiigara: 实务上「判断东西没在用」这件事还满麻烦的...以上面文件 05/07 09:57
11F:→ hiigara: 的例子来说,如果$sth没有设为null,还是会因为$sth里面 05/07 09:58
12F:→ hiigara: 有用到$dbh而无法把$dbh回收掉 05/07 09:58
13F:→ hiigara: 不过最少在这只PHP跑完後,PHP还是会自动回收掉外部资源 05/07 10:00
14F:→ hiigara: 除~非~那是个persistence connection,那就会被留着 05/07 10:01
15F:→ hiigara: 让下一个用到的PHP程式使用 05/07 10:01
wow 谢谢你这麽详细的回答
※ 编辑: nono5938 (39.10.202.139), 05/07/2017 16:00:56
16F:→ banqhsia: 没在管 +1 05/11 01:04
17F:→ blo6: php是直译语言,是优点也是缺点。优点是你不用深入管理记忆 05/15 02:10
18F:→ blo6: 体,缺点是当效能极限时很难再提升。这也是facebook把php改 05/15 02:10
19F:→ blo6: 成组译的原因 05/15 02:10
20F:推 GALINE: PHP 应该没有 assembler..HHVM 靠 JIT,目前 PHP7.1 没有 05/15 16:47
21F:→ GALINE: JIT 就快要跟 HHVM 平起平坐,真的引入 JIT 的话应该更快 05/15 16:48
22F:→ GALINE: 没有办法操控底层资料结构是硬伤,但是这点对於九成九九的 05/15 16:49
23F:→ GALINE: PHP 应用都不是问题,DB 以及网路传输没那麽快 05/15 16:49
24F:→ GALINE: 更何况 Python 那麽慢大家都用得这麽开心了(酸 05/15 16:50
25F:→ MOONRAKER: php是没有asm 不过他底层一样有opcode这些设计 05/20 18:40
26F:→ MOONRAKER: 而且不是fb改的 05/20 18:40
27F:推 ej04cj86: Php 有自己的garbage collector,在一个request cycle 06/01 07:00
28F:→ ej04cj86: 结束後就会被collect and dump 06/01 07:00