2015-10-26 76 views
0

这里的任何人都有使用Redis缓存驱动(CI v3.0.2)并使用PHPUnit(v4.8.16)进行测试的经验吗?Redis缓存驱动抛出PHPUnit异常

我只是想它描述here,它似乎在浏览器中很好地工作,但是当我去到我的终端和尝试使用PHPUnit的测试,我得到这个:

Fatal error: Uncaught exception 'RedisException' with message 'Redis server went away' in /path/to/my-app/system/libraries/Cache/drivers/Cache_redis.php on line 317 

Call Stack: 
    0.0002  247008 1. {main}() /path/to/my-app/vendor/phpunit/phpunit/phpunit:0 
    0.0128 1116832 2. PHPUnit_TextUI_Command::main() /path/to/my-app/vendor/phpunit/phpunit/phpunit:47 
    0.0128 1117456 3. PHPUnit_TextUI_Command->run() /path/to/my-app/vendor/phpunit/phpunit/src/TextUI/Command.php:100 
    0.1355 6531040 4. PHPUnit_TextUI_TestRunner->doRun() /path/to/my-app/vendor/phpunit/phpunit/src/TextUI/Command.php:149 
    0.1437 6885808 5. PHPUnit_Framework_TestSuite->run() /path/to/my-app/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:440 
    0.1647 7612208 6. PHPUnit_Framework_TestSuite->run() /path/to/my-app/vendor/phpunit/phpunit/src/Framework/TestSuite.php:747 
    0.1704 7615816 7. PHPUnit_Framework_TestCase->run() /path/to/my-app/vendor/phpunit/phpunit/src/Framework/TestSuite.php:747 
    0.1704 7616272 8. PHPUnit_Framework_TestResult->run() /path/to/my-app/vendor/phpunit/phpunit/src/Framework/TestCase.php:724 
    0.1705 7617952 9. PHPUnit_Framework_TestCase->runBare() /path/to/my-app/vendor/phpunit/phpunit/src/Framework/TestResult.php:612 
    0.1729 7937600 10. PHPUnit_Framework_TestCase->runTest() /path/to/my-app/vendor/phpunit/phpunit/src/Framework/TestCase.php:768 
    0.1729 7938368 11. ReflectionMethod->invokeArgs() /path/to/my-app/vendor/phpunit/phpunit/src/Framework/TestCase.php:909 
    0.1729 7938640 12. ControllersTest->testLoadController() /path/to/my-app/vendor/phpunit/phpunit/src/Framework/TestCase.php:909 
    0.1731 7941912 13. CI_Controller->__construct() /path/to/my-app/tests/core/ControllersTest.php:33 
    0.1732 7943440 14. load_class() /path/to/my-app/system/core/Controller.php:75 

RedisException: Redis server went away in /path/to/my-app/system/libraries/Cache/drivers/Cache_redis.php on line 317 

我的环境:

$ redis-cli --version 
redis-cli 3.0.5 

$ php --version 
PHP 5.6.14-1+deb.sury.org~wily+1 (cli) 
Copyright (c) 1997-2015 The PHP Group 
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies 
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies 
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans 

我 '的application/config/redis.php' 文件:

<?php 
defined('BASEPATH') or exit('No direct script access allowed'); 

/** 
* Redis Cache Configuration 
* @link https://codeigniter.com/user_guide/libraries/caching.html#redis-caching 
*/ 

$config['socket_type'] = 'tcp'; 
// $config['socket']  = '/var/run/redis.sock'; 
$config['host']  = '127.0.0.1'; 
$config['password'] = null; 
$config['port']  = 6379; 
$config['timeout']  = 0; 

我怎样才能解决这个问题问题?

回答

0

刚刚从CI社区论坛获得解决方案,这是从CI_Cache_Redis类扩展__destruct()方法来赶上RedisException

Here the link和这里的代码(编辑的位)

// application/libraries/Cache/drivers/MY_Cache_redis.php 
public function __destruct() 
{ 
    try { 
     $this->_redis->close(); 
    } catch (Exception $e) { 
     // Do nothing 
     // log_message('info', $e); 
    } 
}