首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
Swoole简介
Swoole安装
TCP服务器
UDP服务器
HTTP服务器
WebSocket服务器
初探协程
协程与异步基础
Swoole核心概念基础
服务端(异步)
TCP/UDP服务器
方法
__construct
set
on
addListener、listen
addProcess
start
reload
stop、shutdown
tick、after、clearTimer
defer、close
send、sendfile、sendto...
exit、pause、resume
getXXX方法
bind、stats
task相关方法
其它方法补充
属性
配置
reactor_num
worker_num
max_request
max_conn
message_queue_key
daemonize
open_tcp_keepalive
heartbeat_check_interval
heartbeat_idle_time
open_tcp_nodelay
open_cpu_affinity
cpu_affinity_ignore
tcp_defer_accept
log相关配置
ssl相关配置
task相关配置
protocol相关配置
package相关配置
user、group
chroot、pid_file
buffer相关配置
enable_unsafe_event
discard_timeout_request
enable_reuse_port
enable_delay_receive
reload_async
max_wait_time
tcp_fastopen
request_slowlog_file
enable_coroutine
max_coroutine/max_coro_num
send_yield
send_timeout
hook_flags
tcp_user_timeout
stats_file
event_object
start_session_id
single_thread
max_queued_bytes
admin_server
事件和回调
Swoole\Server子类
Swoole\Server\Task
Swoole\Server\Packet
Swoole\Server\PipeMessage
Swoole\Server\StatusInfo
Swoole\Server\TaskResult
Swoole\Server\Event
HTTP服务器
Request类
header()
server()
get()
post()
cookie()
files()
getContent()
getData()
create()
parse()
isCompleted()
getMethod()
Response类
header()
trailer()
cookie()
status()
redirect()
write()
sendfile()
end
detach
create()
isWritable()
配置选项
WebSocket服务器
事件
onBeforeHandshakeResponse
onHandShake
onOpen
onMessage
onRequest
onDisconnect
方法
push()
exist()
pack()
unpack()
disconnect()
isEstablished()
数据帧帧类
Frame类
CloseFrame类
常量
选项
Redis服务器
多端口监听
服务端(协程)
TCP 服务器
HTTP 服务器
WebScoket 服务器
客户端
同步阻塞客户端
完整示例
方法
属性
常量
配置
一键协程化
方法
setHookFlags()
getHookFlags()
SWOOLE_HOOK_ALL
SWOOLE_HOOK_TCP
SWOOLE_HOOK_UNIX
SWOOLE_HOOK_UDP
SWOOLE_HOOK_UDG
SWOOLE_HOOK_SSL
SWOOLE_HOOK_TLS
SWOOLE_HOOK_SLEEP
SWOOLE_HOOK_FILE
SWOOLE_HOOK_STREAM_FUNCTION
SWOOLE_HOOK_BLOCKING_FUNCTION
SWOOLE_HOOK_PROC
SWOOLE_HOOK_CURL
SWOOLE_HOOK_NATIVE_CURL
SWOOLE_HOOK_SOCKETS
SWOOLE_HOOK_STDIO
Hook列表
协程客户端
TCP/UDP 客户端
Socket客户端
方法
__construct()
getOption()
setOption()
setProtocol()
bind()
listen()
accept()
connect()
checkLiveness()
send()
sendAll()
peek()
recv()
recvAll()
readVector()
readVectorAll()
writeVector()
writeVectorAll()
recvPacket()
recvLine()
recvWithBuffer()
recvfrom()
sendto()
getsockname()
getpeername()
close()
isClosed()
常量
HTTP/WebSocket客户端
方法
__construct()
set()
setMethod()
setHeaders()
setCookies()
setData()
addFile()
addData()
get()
post()
upgrade()
push()
recv()
download()
getCookies()
getHeaders()
getStatusCode()
getBody()
close()
execute()
函数
当前位置:
首页>>
技术小册>>
PHP高性能框架-Swoole
小册名称:PHP高性能框架-Swoole
**编写TCP服务启动文件** 在服务器中建立一个项目目录,如swoole,建立tcpServer.php 文件:swoole\tcpServer.php ```asp <?php //创建Server对象,监听 127.0.0.1:8081 端口。 $server = new Swoole\Server('127.0.0.1', 8081); //监听连接进入事件。 $server->on('Connect', function ($server, $fd) { echo "Client: Connect.\n"; }); //监听数据接收事件。 $server->on('Receive', function ($server, $fd, $reactor_id, $data) { $server->send($fd, "Server: {$data}"); }); //监听连接关闭事件。 $server->on('Close', function ($server, $fd) { echo "Client: Close.\n"; }); //启动服务器 $server->start(); ``` **运行服务** 执行命令: ```asp root@304ed074bf34:/var/www/html/swoole# ls tcpServer.php root@304ed074bf34:/var/www/html/swoole# php tcpServer.php ``` 使用ps命令和netstat命令查看tcp服务进程: ```asp root@304ed074bf34:/var/www/html# ps -ef | grep tcp root 90 60 0 13:02 pts/3 00:00:00 php tcpServer.php root 91 90 0 13:02 pts/3 00:00:00 php tcpServer.php root 93 91 0 13:02 pts/3 00:00:00 php tcpServer.php root@304ed074bf34:/var/www/html# netstat -tlunp | grep 8081 tcp 0 0 127.0.0.1:8081 0.0.0.0:* LISTEN 90/php ``` **测试连接tcp服务器** 使用telnet 127.0.0.1 8081命令连接到tcp服务器,并发送字符串hello,查看响应。 ```asp root@304ed074bf34:/var/www/html# telnet 127.0.0.1 8081 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. hello Server: hello ``` 这样就创建了一个 TCP 服务器,监听本机 8081 端口。它的逻辑很简单,当客户端 Socket 通过网络发送一个 hello 字符串时,服务器会回复一个 Server: hello 字符串。 **小结:** Server 是异步服务器,所以是通过监听事件的方式来编写程序的。当对应的事件发生时底层会主动回调指定的函数。如当有新的 TCP 连接进入时会执行 onConnect 事件回调,当某个连接向服务器发送数据时会回调 onReceive 函数。 - 服务器可以同时被成千上万个客户端连接,$fd 就是客户端连接的唯一标识符。 - 调用 $server->send() 方法向客户端连接发送数据,参数就是 $fd 客户端标识符。 - 调用 $server->close() 方法可以强制关闭某个客户端连接。 - 客户端可能会主动断开连接,此时会触发 onClose 事件回调。
上一篇:
Swoole安装
下一篇:
UDP服务器
该分类下的相关小册推荐:
Laravel(10.x)从入门到精通(十四)
Laravel(10.x)从入门到精通(十二)
Swoole入门教程
PHP8入门与项目实战(6)
PHP面试指南
Workerman高性能框架-GatewayWorker
PHP程序员的设计模式
Magento零基础到架构师(系统管理)
Laravel(10.x)从入门到精通(五)
PHP合辑5-SPL标准库
Yii2框架从入门到精通(中)
Magento中文全栈二次开发