標籤:

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 |