2015-10-26 77 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); 
    } 
}