PHP構建即時通訊系統
什麼是即時通訊?
實時的數據傳輸與交互
前提準備知識
1.TCP
傳輸層通信協議
面向連接的、可靠的、基於位元組流的
建立鏈接需要三次握手
2.Socket(套接字)
一個工具,一個介面
封裝了TCP/IP協議
建立長連接的基礎
3.HTTP協議
一個應用層協議
Header+Body組成
比TCP更高級
短連接
流程:
客戶機通過TCP/IP協議建立到伺服器的TCP連接
客戶端向伺服器發送HTTP協議請求
伺服器向客戶機發送HTTP協議應答包
斷開連接。客戶端渲染HTML文檔
4.WebSocket
一個應用層協議
長連接
主流即是通訊協議
開始開發
今天我們開發的是使用MeepoPs,一個多進程, 高性能, 高可用, 高並發, 分散式的輕量級Socket服務。聲明:嚴重依賴PHP的PCNTL庫,不支持任何非Linux/unix系統。
本次開發我是在Centos下開發的。
官方網址:
http://meepops.lanecn.com/n
安裝前的準備
1.安裝pcntl擴展(可參照我的另一個文章:PHP可擴展(extension))
2.安裝POSIX擴展(支持正則表達式)原則上也可以參照PHP擴展文章,但是有個簡單的方式可以直接安裝
yum list php-processnyum install php-process.i686 -yn
3.stream_socket_server()的開啟
函數作用:Create an Internet or Unix domain server socket
找到php.ini文件,搜索
disable_functions=n
把stream_socket_server刪掉,然後保存重啟伺服器即可
開發第一步
下載meepops
git clone https://github.com/lixuancn/MeepoPS.gitn
meepoPs測試
meepoPS已經幫我們寫好了一個demo,我們直接使用就可以了
啟動meepops
sudo php demo-telnet.php start -dn
這個時候我們就可以用Telnet連接埠了
telnet 127.0.0.1 8080n
如果提示找不到Telnet命令,說明Linux系統上沒有裝Telnet服務,這個時候輸入以下命令安裝
yum list telnetnyum install telnet.i686 -yn
之後我們就可以測試了,更過內容請通過官網的說明文檔獲得
推薦閱讀:
※如何安全地在beta或release環境上調試之basic認證
※如何使用PHP構建一個高性能的彈幕後端服務
※為什麼 C++ / PHP / Delphi / C# 的設計者都是丹麥人?
※前端工程師學 Node.js 好還是 PHP 好?
TAG:PHP |