[請益] DB with singleton

看板PHP作者 (在每個人的心裡)時間11年前 (2012/10/10 16:21), 編輯推噓1(109)
留言10則, 4人參與, 最新討論串1/1
一直以來只要是看到 singleton 的介紹千篇一律都是介紹如何運用在 DB 連線上 但我有一點不解的地方,這種作法在大量使用者時適當嗎? public static function getInstance() { if (!(self::$_instance instanceof self)) self::$_instance = new self(); return self::$_instance; } 假設有 10 名使用者, 編號 1 的使用者率先連線上來, 由於 !(self::$_instance instanceof self) 成立, 因此會執行 new self(); 而接下來的 9 名使用者則會直接 return self::$_instance 我不解的地方是: 這樣的作法等於是 10 名使用者在共用這個 $_instance 當這 10 名使用者同時間丟出請求時,不就得落入排隊的囧境? 那如果是 100人,1000人時,不就得等更久了? 如果是這樣, 那不如一人給他一條線不是更好嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.148.137

10/10 18:06, , 1F
這看起來只是在目前執行空間(process space)中共用連線
10/10 18:06, 1F

10/10 18:07, , 2F
吧。一百個人上來對到的應該是一百個新的apache process
10/10 18:07, 2F

10/10 18:08, , 3F
你如果可以讓這一百個process共用連線,那就厲害了
10/10 18:08, 3F

10/11 09:48, , 4F
就跟樓上說得一樣, 不過process共用DB連線的話可以掛
10/11 09:48, 4F

10/11 09:48, , 5F
connecting pool. 在某方面是共用啦, 某方面 XDD
10/11 09:48, 5F

10/11 13:33, , 6F
connection pool 沒有比較快 or 省資源啊… XD
10/11 13:33, 6F

10/11 13:34, , 7F
還是要在 local 養一個 daemon ,而且這樣 php 需要過兩層
10/11 13:34, 7F

10/11 13:35, , 8F
話說回來,如果這些連線要 keep connecting 的話,那…嗯…
10/11 13:35, 8F

10/11 18:47, , 9F
總之,除非還有什麼奇妙設計,否則原po的問題應該不存在
10/11 18:47, 9F

10/11 22:24, , 10F
謝謝大家...^^
10/11 22:24, 10F
文章代碼(AID): #1GTI_qLm (PHP)