在worker里面连接 redis 连接超时

0

例如:启动一个worker程序。处理redis里面数据。但是 这个redis一直没有接收到数据,redis 就报超时。 过一会有数据上报。发现redis超时了。不在执行数据了。怎么让redis 有数据处理数据,报超时 再次连接 处理数据。


redis类 那些需要调整
namespace dg;


use Exception;


class RedisCache
{


private static $redis;
private static $config = array(
'host' => '127.0.0.1',
'port' => 6379,

);

public static function setConfig($config = [])
{
self::$config = $config;
}

private static function init()
{
$host = self::$config['host'];
$port = self::$config['port'];

$redis = new \Redis();

if (!$redis->pconnect($host, $port)) {
exit('redis 连接失败');
}

if (isset(self::$config['pass'])) {
if (!$redis->auth(self::$config['pass'])) {
exit('redis 密码错误');
}
}

self::$redis = $redis;
}

/**
* 连接状态判断
*/
private static function ping()
{
return self::$redis->ping();
}

public static function __callStatic($method, $args)
{
if (!self::$redis) {
self::init();
}

if (!self::ping()) {
self::$redis->close();

self::init();
}

return call_user_func_array([self::$redis, $method], $args);
}

}

已邀请:

six

赞同来自:

具体报什么错?
我记得redis扩展会自动重连的啊。
不行你就弄个定时器,定时 ping,免得redis链接被关闭。

要回复问题请先登录注册