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应用

  1. 熔断器
  2. php实现redis分布式锁set+客户端标识
  3. CAP简单理解
  4. 分布式事务
  5. 分布式事务四种解决方案
  6. 2pc和3pc的区别
  7. 服务器优化
  8. db与缓存一致性
  9. 多路io复用
  10. rehash
  11. 数据库索引为什么不用hash表而用b+树
  12. 如何高效生成趋势有序的全局唯一ID
  13. 幂等性方案
  14. 分库分表带来的问题 包含id问题的解决方案
  15. udp、tcp问了很多次了 直接看文章结尾
  16. http和https 也是问了很多次 直接看区别
  17. 进程间通信IPC
  18. 分布式session一致性
  19. 负载均衡算法
  20. LRU算法
  21. mysql orderby
  22. 限流算法
  23. 大文件排序
  24. 动态语言和静态语言
  25. 布隆过滤器
  26. 链路追踪选型
  27. 分布式网络分区
  28. 微服务分层
  29. 一致性hash
  30. linux查看ip情况

GoLang(2006-01-02 15:04:05)

  1. 协程的产生
  2. context
  3. GMP
  4. 多线程读取map
  5. 空interface{}与非空interface{}的区别
  6. csp 通信顺序进程
  7. go语言实现单例模式
  8. unsafe.Pointer
  9. json无tag
  10. go sync包
  11. m0和g0
  12. go channel的使用场景
  13. go nil
  14. go 闭包
  15. go channel底层实现
  16. 深入理解Golang之channel
  17. go slice
  18. go map扩容
  19. go 垃圾回收
  20. go slice map channel简单实现原理
  21. go常见问题
  22. golang逃逸分析
  23. go拼接字符串
  24. golang性能剖析pprof
  25. 有效控制goroutine的并发数量
  26. golang基准测试
  27. pprof
  28. GRPC