例如:啟動(dòng)一個(gè)worker程序。處理redis里面數(shù)據(jù)。但是 這個(gè)redis一直沒有接收到數(shù)據(jù),redis 就報(bào)超時(shí)。 過一會(huì)有數(shù)據(jù)上報(bào)。發(fā)現(xiàn)redis超時(shí)了。不在執(zhí)行數(shù)據(jù)了。怎么讓redis 有數(shù)據(jù)處理數(shù)據(jù),報(bào)超時(shí) 再次連接 處理數(shù)據(jù)。
redis類 那些需要調(diào)整
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 密碼錯(cuò)誤');
}
}
self::$redis = $redis;
}
/**
* 連接狀態(tài)判斷
*/
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);
}
}
具體報(bào)什么錯(cuò)?
我記得redis擴(kuò)展會(huì)自動(dòng)重連的啊。
不行你就弄個(gè)定時(shí)器,定時(shí) ping,免得redis鏈接被關(guān)閉。