看板 PHP 關於我們 聯絡資訊
一直以來只要是看到 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
MOONRAKER:這看起來只是在目前執行空間(process space)中共用連線 10/10 18:06
MOONRAKER:吧。一百個人上來對到的應該是一百個新的apache process 10/10 18:07
MOONRAKER:你如果可以讓這一百個process共用連線,那就厲害了 10/10 18:08
mervynW:就跟樓上說得一樣, 不過process共用DB連線的話可以掛 10/11 09:48
mervynW:connecting pool. 在某方面是共用啦, 某方面 XDD 10/11 09:48
gpmm:connection pool 沒有比較快 or 省資源啊… XD 10/11 13:33
gpmm:還是要在 local 養一個 daemon ,而且這樣 php 需要過兩層 10/11 13:34
gpmm:話說回來,如果這些連線要 keep connecting 的話,那…嗯… 10/11 13:35
MOONRAKER:總之,除非還有什麼奇妙設計,否則原po的問題應該不存在 10/11 18:47
inav8dheart:謝謝大家...^^ 10/11 22:24