本文假設你已經有了 Linux 作業系統的 PHP 環境,強烈推薦使用 Vagrant 來搭建開發環境
安裝 Swoole PECL 拓展
可以通過 pecl 命令或者通過原始碼包編譯安裝,本文采用 pecl 命令來安裝 Swoole在命令列輸入
$ > pecl install swoole
安裝 Swoole PECL 拓展,執行命令后通過php -m命令來檢查 Swoole 是否安裝成功,如果回傳的拓展串列中包含swoole則表明已經安裝成功,也可以通過phpinfo來檢查 Swoole 是否安裝成功,
安裝 ThinkPHP5 框架1.安裝 Composer如果已經安裝了 Composer 可以跳過本步驟,但是請確定通過composer self-update命令來確保已經使用了最新版本的 Composer 使用以下命令可以直接通過 Composer 官網下載 Composer.phar 并自動安裝到/usr/local/bin/目錄下
$ > php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/local/bin/ --filename=composer
$ > composer self-update
如果以上安裝程序極慢的話,可以嘗試用以下方式通過 Composer 國內鏡像來安裝,
$ > php -r "readfile('http://install.phpcomposer.com/installer');" | php -- --install-dir=/usr/local/bin/ --filename=composer
$ > composer config -g repo.packagist composer https://packagist.phpcomposer.com
$ > composer self-update
2.安裝 ThinkPHP5 框架
使用以下命令把最新版本的 ThinkPHP5 框架安裝到當前目錄下的 thinkSwooleFirst 檔案夾中
$ > composer create-project topthink/think thinkSwooleFirst --prefer-dist
安裝 think-swoole Composer 包
把命令列目錄切換到 thinkSwooleFirst 目錄,通過 Composer 安裝 think-swoole
$ > composer require topthink/think-swoole
安裝 think-swoole Composer 包之前必須先安裝好 Swoole PECL 拓展
HelloSwoole
當環境全部搭建完成后,我們在application/index/controller目錄下建立Demon.php檔案,用來書寫 Swoole 與 ThinkPHP5 的 TCP 服務器的 Hello World
1 <?php 2 namespace app\index\controller; 3 4 // 必須 use 并繼承 \think\swoole\Server 類 5 use think\swoole\Server; 6 7 class Demon extends Server 8 { 9 // 監聽所有地址 10 protected $host = '0.0.0.0'; 11 // 監聽 9501 埠 12 protected $port = 9501; 13 // 指定運行模式為多行程 14 protected $mode = SWOOLE_PROCESS; 15 // 指定 socket 的型別為 ipv4 的 tcp socket 16 protected $sockType = SWOOLE_SOCK_TCP; 17 // 配置項 18 protected $option = [ 19 /** 20 * 設定啟動的worker行程數 21 * 業務代碼是全異步非阻塞的,這里設定為CPU的1-4倍最合理 22 * 業務代碼為同步阻塞,需要根據請求回應時間和系統負載來調整 23 */ 24 'worker_num' => 4, 25 // 守護行程化 26 'daemonize' => true, 27 // 監聽佇列的長度 28 'backlog' => 128 29 ]; 30 31 /** 32 * 收到資訊時回呼函式 33 * @param \swoole_server $serv swoole_server物件 34 * @param $fd TCP客戶端連接的檔案描述符 35 * @param $from_id TCP連接所在的Reactor執行緒ID 36 * @param $data 收到的資料內容 37 */ 38 public function onReceive(\swoole_server $server, $fd, $from_id, $data) 39 { 40 $server->send($fd, 'onReceive: ' . $data); 41 } 42 }
以上代碼即使用 ThinkPHP5 和 Swoole 完成了相對簡單的 TCP 服務器,接下來就可以運行服務器使用以下命令即可啟動 TCP 服務器
$ > php public/index.php index/Demon/start
我們也可以通過修改配置項deamonize為false,讓程式不使用守護行程,更方便我們的除錯
使用守護行程方式我們也可以使用lsof工具來檢測,埠是否處于正常狀態
我們也可以通過修改配置項deamonize為false,讓程式不使用守護行程,更方便我們的除錯
使用守護行程方式我們也可以使用lsof工具來檢測,埠是否處于正常狀態
$ > lsof -i:9501
當確認程式正常運行后,使用telnet工具來連接 TCP 服務器,稍后的文章中我們也會講述如果使用 swoole 的 TCP 客戶端來連接 TCP 服務器
telnet 127.0.0.1 9501
輸入hello后會得到以下結果
onReceive: hello
phper在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要的(點擊→)我的官方群677079770
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/122663.html
標籤:PHP
