這有點複雜,所以請不要跳到結論,隨意問任何不夠清楚的事情。PHP線程和高延遲文件訪問(例如:FTP)
基本上,我有一個用PHP編寫的websocket服務器。請注意,websocket消息是異步的,也就是說,在客戶端繼續工作時(如果適用),對請求的響應可能需要很長時間。
客戶端應該要求服務器訪問其他服務器上的文件。這可以是FTP服務或Dropbox。
在這裏,請採取兩種問題注意:應連接共享和重用和服務器實際上「凍結」,同時完成其工作,因此,任何請求進行處理後,服務器有「解凍」。
因此,我想,爲什麼不卸載文件訪問(這是凍結服務器)到PHP threads?
這裏的問題是雙重的;
- 如何在子線程可用的主線程(服務器)中創建連接資源(對於上述線程模型不可能)?
- 如果兩個線程最終需要相同的資源會發生什麼?如果一個人被鎖定,直到另一個人完成,這很好,但我們仍然需要弄清問題#1。
也許我的思路全部搞砸了,如果你能找到更好的解決方案,我很想聽到它。我也有過一個擁有連接資源的PHP線程的想法,但它的內存密集。
您可能可以在PHP中使用它,但我可能會建議使用另一種服務器端技術(如Node.JS),或者以更直接的方式實際支持多線程的東西。如果你使用Node路由,你不必實際編寫任何線程代碼......它通過在單個線程中運行你的代碼,但在幕後以多線程方式處理IO,它可以爲你工作。當然,你仍然有一個維護連接池到外部資源的問題,但是至少你的代碼能夠在不通過IPC的情況下看到該池。 – Brad
很久以前我就曾想過Node.js,它既沒有幫助,也沒有減少我的事業的任何代碼。事實上,它增加了維護,並減少了服務器提供商的選擇(不,我不需要一個花哨的雲提供商爲這樣一個小小的個人應用程序)。 – Christian
我還有另一個問題,它會應用於node.js,只是相同;我將如何共享不同線程之間的連接? – Christian