10、Swoole 初體驗

arunfung發表於2020-03-09

引言

介紹完 Swoole 及具備的能力、應用場景以及常用框架,下面就帶大家來簡單體驗一下,建立一個 TCP 服務。

Swoole 體驗

  • 建立 swoole, 預設建立的是一個同步的阻塞tcp服務

    $host = "127.0.0.1"; // 0.0.0.0 代表接聽所有
    // 建立Server物件,監聽 127.0.0.1:9501埠
    $server = new Swoole\Server($host, 9501);
  • 註冊事件

// 監聽啟動事件
$server->on(‘Start’, function($server) use ($host){
echo “啟動swoole 監聽的資訊tcp:$host:9501\n”;
});

//監聽連線進入事件
$server->on(‘Connect’, function ($server, $fd) {
echo “Client: Connect.\n”;
});

//監聽資料接收事件
$server->on(‘Receive’, function ($server, $fd, $from_id, $data) {
$server->send($fd, “Server: “.$data);
});

//監聽連線關閉事件
$server->on(‘Close’, function ($server, $fd) {
echo “Client: Close.\n”;
});


- 啟動伺服器
```php
// 阻塞
$server->start(); // 阻塞與非阻塞

執行程式

// 儲存成 PHP 檔案,然後通過 php 執行
php swoole_tcp_server.php

連線服務

服務啟動好之後就可以通過 curl 請求一下試試:
(請求之前需要)

curl http://127.0.0.1:9501
# 請求連線之後就會返回一些基礎資訊,並一直阻塞住
Server: GET / HTTP/1.1
User-Agent: curl/7.29.0
Host: 127.0.0.1:9501
Accept: */*

結語

# 一個用 swoole 搭建的伺服器已經可以了,客戶端連線正常,這樣就可以保持一個長連線,而不必像 PHP-FPM 那種形式一樣,每次都要重新連線,浪費資源,做微服務的時候就可以一直保持連線拉,包括做各種資料中介軟體的連線池都可以啦,接下來可以看我的部落格繼續學習 Swoole 啦
本作品採用《CC 協議》,轉載必須註明作者和本文連結
  • 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
  • 文章來源https://blog.arunfung.com