- 异步回调
- ⛔️重要提示
- 异步 IO
- swoole_async_set
异步回调
⛔️重要提示
异步回调模块已过时,目前仅修复 BUG,不再进行维护, 且在V4.3.0中移除了异步模块。请使用 Coroutine 协程模块。
异步 IO
Swoole扩展内置了异步文件读写,异步DNS,异步Http/WebSocket/MySQL/Redis客户端,异步定时器,异步信号等特性。编写纯异步非阻塞IO的程序时,不能使用PHP自带的同步阻塞网络客户端,如curl、file_get_contents、stream、sockets、mysql、redis。
Swoole\Server的Task进程是同步阻塞的,没有EventLoop,因此无法使用除定时器之外的任何异步APIsignalfd是Linux-2.6.27提供文件句柄方式处理信号特性,优点是可以将信号加入到EventLoop中,Reactor操作不会被信号打断提高了性能。缺点是有些同步阻塞的程序可能会出现问题,无法从阻塞中中断,可以使用swoole_async_set关闭signalfd特性
swoole_async_set
此函数可以设置异步IO相关的选项。
swoole_async_set(array $setting);
thread_num设置异步文件IO线程的数量enable_signalfd开启和关闭signalfd特性的使用enable_reuse_port开启端口复用,需要Linux-3.10或更高版本内核,开启后BASE模式下每个工作进程都会监听端口,可避免惊群问题socket_buffer_size设置SOCKET内存缓存区尺寸socket_dontwait在内存缓存区已满的情况下禁止底层阻塞等待log_file设置日志文件路径log_level设置错误日志等级
