學習 Swoole(一)

icecho發表於2019-04-28

Swoole:面向生產環境的 PHP 非同步網路通訊引擎。
使 PHP 開發人員可以編寫高效能的非同步併發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 可以廣泛應用於網際網路、行動通訊、企業軟體、雲端計算、網路遊戲、物聯網(IOT)、車聯網、智慧家居等領域。 使用 PHP + Swoole 作為網路通訊框架,可以使企業 IT 研發團隊的效率大大提升,更加專注於開發創新產品。

簡介

  • Swoole 使用純 C 語言編寫,提供了 PHP 語言的非同步多執行緒伺服器,非同步 TCP/UDP 網路客戶端,非同步 MySQL,非同步 Redis,資料庫連線池,AsyncTask,訊息佇列,毫秒定時器,非同步檔案讀寫,非同步 DNS 查詢。 Swoole 內建了 Http/WebSocket 伺服器端/客戶端、Http 2.0 伺服器端。
  • 除了非同步 IO 的支援之外,Swoole 為 PHP 多程式的模式設計了多個併發資料結構和 IPC 通訊機制,可以大大簡化多程式併發程式設計的工作。其中包括了併發原子計數器,併發 HashTable,Channel,Lock,程式間通訊IPC等豐富的功能特性。
  • Swoole 2.0 支援了類似 Go 語言的協程,可以使用完全同步的程式碼實現非同步程式。PHP 程式碼無需額外增加任何關鍵詞,底層自動進行協程排程,實現非同步。

實踐第一個小例子(建立一個 TCP 伺服器)

<?php

//  建立物件,監聽本地 1215 埠
$serve = new swoole_server('127.0.0.1', 1215);

//  監聽連線進入事件
$serve->on('connect', function ($serve, $mark) {  
    echo 'Hello customer' . PHP_EOL;
});

//  監聽資料接收事件
$serve->on('receive', function ($serve, $mark, $from_id, $data) {
    $serve->send($mark, 'Server: '.$data);
});

//  監聽關閉
$serve->on('close', function ($serve, $mark) {
    echo 'Client: Close' . PHP_EOL;
});

$serve->start();
  1. 建立一個 PHP 檔案,寫入上面的程式碼。

    ~ touch swoole-tcp.php
    ~ vim swoole-tcp.php
  2. 把小案例跑起來。

    ~ php swoole-tcp.php
    ...
    ...
  3. 測試我們們的小案例。

    ~ telnet 127.0.0.1 1215
    hello world
    ...
    ...
    telnet> quit

    執行一些簡單的命令,嘗試嘗試。

總結

之後還會繼續學習 Swoole,與大家繼續分享它,有趣!但是可能會更新的比較慢哈。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Hello。

相關文章