作者gpmm (銀色)
看板PHP
標題Re: [請益] 物件中的物件表示法
時間Thu Mar 21 13:36:14 2013
: //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
1F:推 dlikeayu:這我也有點小疑問,因為很多設計模式都是C和Java來的 03/21 15:23
2F:→ dlikeayu:其實用到雙重鎖定在各OO語言應該就很足夠且省資源 03/21 15:23
3F:→ dlikeayu:加上synchronized是可保障那幾兆分之一的出錯 03/21 15:24
4F:→ dlikeayu:在Java多加這一動保護是佔什麼資源,PHP的sem 就不太熟了 03/21 15:28
5F:→ gpmm:模式本身沒問題啊,是語言特性,PHP 在一般情況下一個 client 03/22 02:30
6F:→ gpmm:就是一個單一的執行環境,不太有機會在不同 client 之間共用 03/22 02:32
7F:→ gpmm:資源,不是說不行,只是機會很少,因為每個 client 的執行 03/22 02:33
8F:→ gpmm:週期都太短,真的有共同用到資源的部份也是往外抓 daemon 03/22 02:34
9F:→ gpmm: service 居多,像 db / memcache 等等 03/22 02:34
10F:→ gpmm:競爭都由各個 service 自己處理掉了,所以 PHP 相對就,不太 03/22 02:35
11F:→ gpmm:要在意這個 03/22 02:35
12F:→ gpmm:當然還是有適合的情景啦,例如要寫一個精準的 pv counter, 03/22 02:36
13F:→ gpmm:如果用檔案來做的話應該就要用類似的方式來避免互蓋 :Q 03/22 02:39
14F:→ dlikeayu:印象好像是有瀏覽器外掛能把多分頁弄成一request 03/22 04:49
15F:→ dlikeayu:另外就是websocket 03/22 04:52
16F:→ dlikeayu:這方面我也得再學習厘清一下>< 03/22 04:53