🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 扩展组件 [TOC] 从`4.1.2`版本开始底层提供了`Socket Hook`机制,可将`MongoDB`、`ZooKeeper`等`PHP`扩展编译为`Swoole4`协程版本。 ## 实现原理 底层提供了`socket_hook.h`和`file_hook.h`,在扩展源代码中找到`#include <sys/socket.h>`的代码,下面插入`#include "ext/swoole/include/socket_hook.h"`即可。底层会自动替换`socket`相关的系统调用,转化为协程的`C`函数。 如`recv()`系统调用将被转换为`swoole_coroutine_recv`,这个`C`函数实现是在`swoole.so`中。因此使用`socket_hook`的扩展,需要依赖`swoole`扩展,必须在`extension=swoole.so`之后加入。 不仅是`PHP`扩展,其他的`C/C++`代码也可以使用这种方式实现协程化。 ## 兼容性 使用`socket_hook`协程化后的扩展,在非协程中依然是同步阻塞的。只有在`Swoole4`协程中才会被切换为协程模式。与同步模式可以保持兼容。