statistics:使用 PHP + Swoole 實現的統計監控系統(三)

源碼分析

類&方法

new swoole_client()

  • 創建TCP或UDP類的客戶端:new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_SOCK_UDP, SWOOLE_SOCK_SYNC)
  • send():發送數據
  • recv():接收數據
  • close():關閉連接
  • 源碼解析:https://blog.csdn.net/lcli2009/article/details/82845729

new swoole_server()

  • 創建TCP服務:new swoole_server($ip, $port)
  • 創建UDP服務:new swoole_server($ip, $port, SWOOLE_PROCESS, SWOOLE_SOCK_UDP)

new swoole_http_server()

  • 創建web服務器:new swoole_http_server($ip, $port)

swoole_set_process_name()

  • 修改進程名:https://wiki.swoole.com/wiki/page/125.html#entry_h3_0
  • MacOsX 不支持修改進程名
  • 如何修改:在swoole_server_create之前修改爲manager進程名稱;onStart調用時修改爲主進程名稱
    onWorkerStart修改爲worker進程名稱

tick()

  • 添加定時器,在Server->start()之後執行
  • worker進程結束運行之後,所有定時器會自動銷燬
  • 在onWorkerStart中使用,根據worker進程數量執行
  • 在onManagerStart中使用,只執行一次
  • Server->tick(1000, function($id){}); $id 是定時器的id,從1開始,一直累加.
  • https://wiki.swoole.com/#/timer

swoole_version

  • swoole版本號

swoole_errno

  • 獲取最近一次的錯誤碼

swoole_strerror

  • 根據錯誤碼獲取錯誤信息:swoole_strerror(swoole_errno())

常量

SWOOLE_TCP

  • 指定的TCP客戶端或服務器

SWOOLE_SOCK_SYNC

  • 創建客戶端時(默認)指定爲:同步阻塞
  • 異步阻塞:SWOOLE_SOCK_ASYNC
  • 同步與異步、阻塞與非阻塞:https://blog.csdn.net/qq_38128179/article/details/86132731

SWOOLE_PROCESS

  • 使用進程模式,業務代碼在 Worker 進程中執行
  • SWOOLE_BASE:使用 Base 模式,業務代碼在 Reactor 進程中直接執行

SWOOLE_SOCK_TCP

  • 指定的TCP客戶端或服務器

SWOOLE_SOCK_UDP

  • 指定的UDP客戶端或服務器

SWOOLE_KEEP

  • 創建TCP長連接:new swoole_client(SWOOLE_SOCK_TCP | SWOOLE_SOCK_KEEP);
  • 不能單獨使用,必須配合SWOOLE_SOCK_TCP、SWOOLE_SOCK_UDP等使用;
  • 優點:TCP長連接可以減少3次握手/4次揮手帶來的額外IO消耗;降低服務端close/connect次數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章