看板 PHP 關於我們 聯絡資訊
我google了一下, 別人程式碼都沒有 free() 或是 close()之類的, 是不用釋放資源? 還是他自己會釋放啊, 怕會佔用我的資源。 ----- Sent from JPTT on my Xiaomi MI 5. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.168.131 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1493992812.A.598.html
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