對Swoole、Workerman和php自帶的socket的理解

it_風信子發表於2018-03-22

為什麼php自帶的socket不怎麼聽說,基本都是用swoole,workerman去實現?

1、PHP的socket擴充套件是一套socket api,僅此而已。

swoole,用C實現,它的socket是C 庫的socket,更加底層可控。

workerman,如題主所說,使用PHP實現,那它的socket就是用PHP socket擴充套件啊。只是對其進行工程化開發,成了一個框架。

2、swoole 框架和 swoole 擴充套件是不一樣的。

swoole 框架也可以脫離 swoole 擴充套件來使用。

swoole 擴充套件將程式管理,tcp 監聽這些工作在 C 裡面做了,以擴充套件的形式提供給 PHP 一些介面來呼叫。

workerman 就是原生的使用 php stream 相關的函式來監聽 tcp,進行程式管理。

如果你想學習 PHP 開發 tcp 的原理建議看 workerman 的原始碼,如果你只是想使用,用 swoole 就 OK 了。

3、就是一個底層通訊框架,基於socket通訊的,

其實PHP 也能做多程式程式設計(擴充套件支援,workerman是這方面NO.1),swoole使用C 實現的一套PHP擴充套件,基於它也是做這方面的功能,因為這兩個底層框架的存在,大大擴充套件了PHP的應用範圍,和不錯的未來期望

4、php現有的應用方式都是基於http的,

對於需要快速實時響應的情況比較乏力,比如網路遊戲或者推送服務一般都需要與使用者長期保持一個tcp連線以便實時響應和推送資訊。

swoole就是解決這樣應用場景的。

這個是讓php自身建立一個服務,不需要nginx之類的代理,直接監聽埠實現通訊。

一種應用方式也可以代替掉nginx做http服務,但一般不會這麼用。

5、實際上作為一名PHP程式設計師,我很清楚PHP的確有很多侷限性,

比如Unix系統程式設計、網路通訊程式設計、非同步io,大部分PHPer不懂。PHP界也確實沒有這樣的東西。Swoole開源專案就是為了彌補PHP在這些方面的缺陷誕生的。與WordPress這些產品不同,swoole實際上是一個網路通訊和非同步io的引擎,一個基礎庫。PHPer可以基於swoole去實現過去PHP無法實現的功能。swoole為PHPer開啟了通往另一個世界的大門。

6、這2個框架都很出名,它們的出現大大的提高了php的應用範圍及知名度

workerman和swoole都是php socket 伺服器框架,都支援長連線、tcp和udp、websocket、非同步、分散式部署等

workerman純php寫的,swoole是php的c擴充套件,效能肯定更高,百度、騰訊不少產品的server就是基於swoole的

workerman上手更快,文件更豐富,社群活躍,社群基本做到有問必答,一般的中小型專案也夠了,所以初學者最好還是使用workerman,熟了後再根據具體業務權衡(官方網站都有壓測資料)

參考文獻

[2]H. Berenson, P. Bernstein, J. Gray, J.Melton, E. O’Neil,and P. O’Neil. A critique of ANSI SQL isolation levels. InProceedings of the SIGMOD International Conference on Management of Data, pages1–10, May 1995.

[3]Michael J. Cahill, Uwe Röhm, and Alan D.Fekete. 2008. Serializable isolation for snapshot databases. In SIGMOD ’08:Proceedings of the 2008 ACM SIGMOD international conference on Management of data, pages 729–738, New York, NY, USA. ACM.

[4]Michael James Cahill. 2009. Serializable Isolation for Snapshot Databases. Sydney Digital Theses. University of Sydney, School of Information Technologies

[5] A. Fekete, D. Liarokapis, E. O’Neil, P.O’Neil, andD. Shasha. Making snapshot isolation serializable. www.codexueyuan.com In ACM transactions on database systems, volume 39(2), pages 492–528, June 2005.


相關文章