看板 PHP 關於我們 聯絡資訊
: //factory setting : //這邊有用到JAVA的雙重鎖定檢查 : //另外還加了synchronized的方式(不過不知道php有沒有效減少資源) : public static function getInstance() : { : if (self::$instance === NULL) : { : //TODO sem muilt process set : $SEMKey = "99999"; : //TODO sem muilt process start : sem_acquire($seg); : if (self::$instance === NULL) : { : self::$instance = new self; : } : sem_release($seg); : } : return self::$instance; : } 這… singleton / factory 是很好用沒錯, 但是這個 instance resource 除非是可共用的競爭性 resource , 不然抓到 semaphore 去跑好像有點… XDD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.172.175.174
dlikeayu:這我也有點小疑問,因為很多設計模式都是C和Java來的 03/21 15:23
dlikeayu:其實用到雙重鎖定在各OO語言應該就很足夠且省資源 03/21 15:23
dlikeayu:加上synchronized是可保障那幾兆分之一的出錯 03/21 15:24
dlikeayu:在Java多加這一動保護是佔什麼資源,PHP的sem 就不太熟了 03/21 15:28
gpmm:模式本身沒問題啊,是語言特性,PHP 在一般情況下一個 client 03/22 02:30
gpmm:就是一個單一的執行環境,不太有機會在不同 client 之間共用 03/22 02:32
gpmm:資源,不是說不行,只是機會很少,因為每個 client 的執行 03/22 02:33
gpmm:週期都太短,真的有共同用到資源的部份也是往外抓 daemon 03/22 02:34
gpmm: service 居多,像 db / memcache 等等 03/22 02:34
gpmm:競爭都由各個 service 自己處理掉了,所以 PHP 相對就,不太 03/22 02:35
gpmm:要在意這個 03/22 02:35
gpmm:當然還是有適合的情景啦,例如要寫一個精準的 pv counter, 03/22 02:36
gpmm:如果用檔案來做的話應該就要用類似的方式來避免互蓋 :Q 03/22 02:39
dlikeayu:印象好像是有瀏覽器外掛能把多分頁弄成一request 03/22 04:49
dlikeayu:另外就是websocket 03/22 04:52
dlikeayu:這方面我也得再學習厘清一下>< 03/22 04:53