国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

有一種情況下,connection對象無法被釋放

phphand

首先我怎么確定不是我的業(yè)務(wù)代碼問題:
就是我的業(yè)務(wù)代碼里,沒有做任何對這個connection對象的引用。為了確認100%沒有做引用,我特意為某個連接做了特殊處理,就是基本上沒有業(yè)務(wù)代碼。

什么情況下無法被釋放:我做的是HTTP服務(wù),就是在客戶端瀏覽器連接上服務(wù)器,但是還沒有收到響應(yīng),就主動的關(guān)閉了連接的情況下。
這時候服務(wù)端的這個connection對象,就無法被正常釋放回收。

我專門研究了,onClose事件會觸發(fā),destroy方法也會被執(zhí)行,但是destruct方法無法被觸發(fā)。

我打印了一下堆棧。大概是:
baseRead方法里面有一個代碼發(fā)現(xiàn)到客戶端的連接已經(jīng)關(guān)閉,然后就主動的執(zhí)行了destroy方法,似乎是試圖關(guān)閉連接。但是結(jié)果是這個連接不能被正常釋放。

2885 2 0
2個回答

walkor 打賞

應(yīng)該是php還沒來得及回收它。執(zhí)行 gc_collect_cycles(); 可以觸發(fā)回收。后面我看下怎么優(yōu)化下。

  • phphand 2021-02-07

    但是同時發(fā)生的其他連接都被回收了,只有這個情況的連接不被回收。

  • phphand 2021-02-08

    我個人認為可能是這種情況下,connection的socket對象沒有被正常釋放,導(dǎo)致連帶connection對象無法回收。

  • phphand 2021-02-08

    我靠,你是對的。確實是php沒來得及回收。用gc_collect_cycles()后,就可以了。但是為什么其他類型的連接能回收???

phphand

我個人認為可能是這種情況下,connection的socket對象沒有被正常釋放,導(dǎo)致連帶connection對象無法回收。

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??