推 hiigara: 是否寫習慣C...PHP引擎自己會做記憶體管理,你碰不到 05/06 10:27
→ hiigara: 一般來說Resource Handler在用不到以後會自動被PHP收拾掉05/06 10:30
→ 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
推 hiigara: 「用不到」指的是沒有其他東西指到這個變數,這邊跟PHP的 05/07 09:52
→ hiigara: 垃圾回收機制綁在一起。一旦PHP認為這個變數可以被GC,就 05/07 09:53
→ hiigara: 會自動把下面的資源放掉,記憶體釋放出來。 05/07 09:53
→ hiigara: 所以官方文件「關閉PDO的DB連線」的方式是把pdo設為null 05/07 09:55
→ hiigara: 實務上「判斷東西沒在用」這件事還滿麻煩的...以上面文件 05/07 09:57
→ hiigara: 的例子來說,如果$sth沒有設為null,還是會因為$sth裡面 05/07 09:58
→ hiigara: 有用到$dbh而無法把$dbh回收掉 05/07 09:58
→ hiigara: 不過最少在這隻PHP跑完後,PHP還是會自動回收掉外部資源 05/07 10:00
→ hiigara: 除~非~那是個persistence connection,那就會被留著 05/07 10:01
→ hiigara: 讓下一個用到的PHP程式使用 05/07 10:01
wow 謝謝你這麼詳細的回答
※ 編輯: nono5938 (39.10.202.139), 05/07/2017 16:00:56
→ banqhsia: 沒在管 +1 05/11 01:04
→ blo6: php是直譯語言,是優點也是缺點。優點是你不用深入管理記憶 05/15 02:10
→ blo6: 體,缺點是當效能極限時很難再提升。這也是facebook把php改 05/15 02:10
→ blo6: 成組譯的原因 05/15 02:10
推 GALINE: PHP 應該沒有 assembler..HHVM 靠 JIT,目前 PHP7.1 沒有 05/15 16:47
→ GALINE: JIT 就快要跟 HHVM 平起平坐,真的引入 JIT 的話應該更快 05/15 16:48
→ GALINE: 沒有辦法操控底層資料結構是硬傷,但是這點對於九成九九的 05/15 16:49
→ GALINE: PHP 應用都不是問題,DB 以及網路傳輸沒那麼快 05/15 16:49
→ GALINE: 更何況 Python 那麼慢大家都用得這麼開心了(酸 05/15 16:50
→ MOONRAKER: php是沒有asm 不過他底層一樣有opcode這些設計 05/20 18:40
→ MOONRAKER: 而且不是fb改的 05/20 18:40
推 ej04cj86: Php 有自己的garbage collector,在一個request cycle 06/01 07:00
→ ej04cj86: 結束後就會被collect and dump 06/01 07:00