源碼分析
類&方法
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次數