例如:启动一个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);
}
}
具体报什么错?
我记得redis扩展会自动重连的啊。
不行你就弄个定时器,定时 ping,免得redis链接被关闭。