看板 PHP 關於我們 聯絡資訊
我想 ... 不管怎樣都會發生, A Server執行指令之前,就被B Server搶走的問題 XD 其實我不是很懂,原 PO 為什麼要使用這種架構? 如果是為了分流,寫同一個檔案又要為了安全, 似乎可能會讓執行時間被迫拉長?! 不過撇開這些不談,我倒有個想法。 PHP 本身就有 flock 的功能, 那能不能讓 www1 ~ wwwN 主機對檔案存取的需求, 全部透過其中一台主機,例如他叫 data? 底下是騙 P 幣的繪圖 主機 data 存取檔案的需求 ┌─────┬─────────────┐ www1────────→│ │ │ www2────────→│ │ 對檔案的操作 │ www3────────→│ fo.php │───────→/tmp/test │ www4────────→│ │ │ www5────────→│ │ │ └─────┴─────────────┘ 那至於 fo.php 該怎麼設定權限, 就可以考慮 Server 的架構,看是要在檔案裡面限制 IP 來源? 或者,使用Apache自身的限制都可以。 甚至,根本不需要透過 *.php 來達成,搞不好可以直接使用 C 來做?! 如果要完全避免碰撞的問題,我會這樣處理, 對檔案操作分成讀取與寫入,讀取時不鎖, 但是寫入時則要鎖,而且在寫入之前先檢查檔案是否還一樣? 不然 www1 改完,www2 又用比較舊的版本改掉 XD 這是小小的建議,請參考。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.101.0.129
guardlan:感謝建議, 這個方式可以試試看, 將寫檔的機制改由一台操 10/16 18:23
guardlan:作, 這樣的話就可以用flock方式去做了, 不過這方法在操作 10/16 18:24
guardlan:量很大的情況下, 應該會Delay到, 我先試試看, 謝謝. 10/16 18:25