swoole--Process&&Event IO

一。进程间通信方式-管道


image.png

1.管道是一组(2个)特殊的描述符
2.管道需要在fork函数调用前创建
3.如果某一端主动关闭管道,另一端的读取操作会直接返回0

二。进程间通信方式-消息队列


image.png

1.通过指定key创建一个消息队列
2.在消息队列中传递的数据大小限制
3.消息队列会一直保留直到被主动关闭

三。IO多路复用


image.png
  1. epoll函数会监听注册在自己名下的所有的socket描述符
    2.当有socket感兴趣的事件发生时,epoll函数才会响应,并返回有事件发生的socket集合
    3.epoll的本质是阻塞IO,它的优点在于能同时处理大量的socket连接

四。Event Loop


image.png

1.Event Loop是一个Reactor线程,其中运行了一个epoll实例
2.可通过接口添加socket描述符到epoll监听中,并指定事件响应的回调函数
3.Event Loop不可用于FPM环境下

Q:为什么开启了event loop的程序会一直运行不停止?
开启Event Loop后,程序内会启动一个线程并一直阻塞在epoll的监听中,因此不会退出。

Q:如何关闭Event Loop?
调用swoole_event_exit函数即可关闭事件循环(注意,swoole_server程序中此函数无效)

五。Process


image.png

1.基于C语言封装的进程管理模块,方便PHP的多进程编程
2.内置管道,消息队列接口,可方便实现进程间通信
3.提供自定义信号管理

process实例 动态进程池
1.使用tick函数定时投递任务
2.动态进程池,根据任务执行的多少动态调整内存池大小

需要使用tick定时任务 swoole_process管道通信 event_loop事件循环

你可能感兴趣的:(swoole--Process&&Event IO)