使用redis插件的时候 开发时 有时候刷新会出现这个
Redis::get(): send of 28 bytes failed with errno=32 Broken pipe start.php 重启就好了 什么问题呢
哪个redis插件?
webman的redis组件默认使用的是illuminate/redis,也就是laravel的redis库,用法与laravel相同。
并没有找到可以断线重连设置的地方 我用的是阿里云的 redis数据库
阿里云好像会自动清理长时间不通讯的redis连接,导致下次使用的时候出现异常。稍等发你一段代码,加个定时器
感恩
vendor/workerman/webman-framework/src/support/Redis.php 改成这样试下, 注意 instance() 和 __callStatic方法有改动
instance()
__callStatic
class Redis { /** * @var RedisManager */ protected static $_instance = null; /** * @return RedisManager */ public static function instance() { if (!static::$_instance) { $config = config('redis'); static::$_instance = new RedisManager('', 'phpredis', $config); } return static::$_instance; } /** * @param string $name * @return \Illuminate\Redis\Connections\Connection */ public static function connection($name = 'default') { static $timers = []; $connection = static::instance()->connection($name); if (!isset($timers[$name])) { $timers[$name] = Timer::add(55, function() use ($connection) { $connection->get('ping'); }); } return $connection; } /** * @param $name * @param $arguments * @return mixed */ public static function __callStatic($name, $arguments) { return static::connection('default')->{$name}(... $arguments); } }
好的 谢谢大佬
大佬,我src 下没有 support文件夹
只有 一级目录 有这个 support/Redis.php
class Redis {
/** * @var RedisManager */ protected static $_instance = null; /** * @return RedisManager */ public static function instance() { if (!static::$_instance) { $config = config('redis'); static::$_instance = new RedisManager('', 'phpredis', $config); } return static::$_instance; } /** * @param string $name * @return \Illuminate\Redis\Connections\Connection */ public static function connection($name = 'default') { return static::instance()->connection($name); } /** * @param $name * @param $arguments * @return mixed */ public static function __callStatic($name, $arguments) { return static::instance()->connection('default')->{$name}(... $arguments); }
}
那就改 support/Redis.php
已经改了 谢谢
哪个redis插件?
webman的redis组件默认使用的是illuminate/redis,也就是laravel的redis库,用法与laravel相同。
并没有找到可以断线重连设置的地方 我用的是阿里云的 redis数据库
阿里云好像会自动清理长时间不通讯的redis连接,导致下次使用的时候出现异常。稍等发你一段代码,加个定时器
感恩
vendor/workerman/webman-framework/src/support/Redis.php 改成这样试下,
注意
instance()
和__callStatic
方法有改动好的 谢谢大佬
大佬,我src 下没有 support文件夹
只有 一级目录 有这个 support/Redis.php
class Redis
{
}
那就改 support/Redis.php
已经改了 谢谢