php教程 swoole解决了什么问题

 所属分类:php教程

 浏览:120次-  评论: 0次-  更新时间:2022-06-02
描述:这是一篇php教程 swoole解决了什么问题的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。 php现有的应用方式都...
这是一篇php教程 swoole解决了什么问题的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。

php现有的应用方式都是基于http的,对于需要快速实时响应的情况比较乏力,比如网络游戏或者推送服务一般都需要与用户长期保持一个tcp连接以便实时响应和推送信息。

swoole就是解决这样应用场景的。 (推荐学习: swoole视频教程)

Swoole的实现

swoole使用纯C编写,不依赖其他第三方库。

swoole并没有用libevent,所以不需要安装libevent

swoole并不依赖php的stream/sockets/pcntl/posix/sysvmsg等扩展

socket部分

swoole使用底层的socket系统调用。

IO事件循环

主进程的事件循环使用select/poll,因为主线程中的文件描述符只有几个,使用select/poll即可

reactor线程/worker进程中使用epoll/kqueue

task进程没有事件循环,进程会循环阻塞读取管道

有很多人使用strace -p去查看swoole主进程只能看到poll系统调用。正确的查看方法是strace -f -p

多进程/多线程

多进程使用fork()系统调用

多线程使用pthread线程库

EventFd

Swoole中使用了eventfd作为线程/进程间消息通知的机制。

Timerfd

Swoole使用timerfd来实现定时器

SIgnalfd

swoole中使用了signalfd来实现对信号的屏蔽和处理。可以有效地避免线程/进程被信号打断,系统调用restart的问题。在主进程中reactor线程不会接受任何信号。

以上就是swoole解决了什么问题的详细内容,更多请关注zzsucai.com其它相关文章!

 标签:
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!