swoole
php扩展安装查看
php -m
查看具体某个扩展的配置信息
php --ri swoole
查看进程端口占用
netstat -ntlp
HTTP server
server = new Swoole\Http\Server(IP,port)
超全局变量的失效(多个协程 进程隔离 $globe 进程间共享)
使用$resquest 获取相关信息
TCP server
server = new Swoole\Server(IP,port)
连接 Content (func(server , fd))
数据接收 Recevie (func(server,fd,rid,data)){
$server->send(fd,"xxx")
}
关闭 Close (func(server , fd))
测试tcp 连接
Telnet IP:port
UDP server
server = new Swoole\Server(IP,port, SWOOLE_PROCESS,SWOOLE_SOVK_UDP)
Packet(server,data,clientInfo){
server->Sendto(clientInfo[IP],clientInfo[port],"xxxx")
}
测试udp 连接
nc -vu IP port
协程与线程:
一时间只有一个协程在进行,单个请求起一个线程,线程内是阻塞执行,遇到IO操作切换其他线程工作。
因此,协程下开发是异步非阻塞的
协程与线程很像,协程由用户代码来调度和管理,而不是由操作系统内核来进行调度,线程可以同时有多个进行
注意事项
4.1 之后提供了一键协程化的方法 \Swoole\Runtime::enableCoroutine(),只需在使用协程前运行这一行代码,Swoole 会将 所有使用 php_stream 进行 socket 操作均变成协程调度的异步 I/O
$_全局变量因为在同个worker下共享,同一时间多个协程读写会出现混淆数据等问题
global 和 静态变量 因为持久化原因不能销毁
协程周期,协程上下文context应用