关于Swoole安装hiredis无法使用异步redis客户端问题
问题描述
根据swoole官方文档安装hiredis并重新编译swoole加入–enable-async-redis后依然无法使用redis扩展。编写并运行异步redis文件,会有如下错误提示:
Fatal error: Uncaught Error: Class 'swoole_redis' not found in xxx
Fatal error: Uncaught Error: Class 'Swoole\Redis' not found in xxx
问题原因
这是由于从版本4.3.0开始,异步客户端和API被移到单独的PHP扩展 swoole_async 了。
官方文档有说明:传送门
解决方案
- 安装swoole异步async扩展
git clone https://github.com/swoole/ext-async.git cd ext-async phpize //注意,如果安装了多个版本的PHP,这里phpize应该是当前使用PHP版本对应的phpize全路径 ./configure make -j 4 sudo make install
- 增加扩展配置到php.ini
vim /usr/local/php/lib/php.ini extension=swoole_async.so
- 测试异步redis是否可用(异步模块(redis等)只能在cli模式下使用,官方文档有说明)
执行该文件,结果:<?php //$redisClient = new swoole_redis; $redisClient = new Swoole\Redis; $redisClient->connect('127.0.0.1', 6379, function(swoole_redis $redisClient, $result){ echo 'connect:'.PHP_EOL; var_dump($result); }); echo 'start';
此时说明,swoole异步模块扩展已经安装完成。