mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-29 22:21:33 +08:00
@@ -371,7 +371,7 @@ class Connection extends Component
|
||||
array_unshift($params, $name);
|
||||
$command = '*' . count($params) . "\r\n";
|
||||
foreach($params as $arg) {
|
||||
$command .= '$' . strlen($arg) . "\r\n" . $arg . "\r\n";
|
||||
$command .= '$' . mb_strlen($arg, '8bit') . "\r\n" . $arg . "\r\n";
|
||||
}
|
||||
|
||||
\Yii::trace("Executing Redis Command: {$name}", __CLASS__);
|
||||
@@ -382,11 +382,11 @@ class Connection extends Component
|
||||
|
||||
private function parseResponse($command)
|
||||
{
|
||||
if(($line = fgets($this->_socket))===false) {
|
||||
if(($line = fgets($this->_socket)) === false) {
|
||||
throw new Exception("Failed to read from socket.\nRedis command was: " . $command);
|
||||
}
|
||||
$type = $line[0];
|
||||
$line = substr($line, 1, -2);
|
||||
$line = mb_substr($line, 1, -2, '8bit');
|
||||
switch($type)
|
||||
{
|
||||
case '+': // Status reply
|
||||
@@ -400,10 +400,16 @@ class Connection extends Component
|
||||
if ($line == '-1') {
|
||||
return null;
|
||||
}
|
||||
if(($data = fread($this->_socket, $line + 2))===false) {
|
||||
throw new Exception("Failed to read from socket.\nRedis command was: " . $command);
|
||||
$length = $line + 2;
|
||||
$data = '';
|
||||
while ($length > 0) {
|
||||
if(($block = fread($this->_socket, $line + 2)) === false) {
|
||||
throw new Exception("Failed to read from socket.\nRedis command was: " . $command);
|
||||
}
|
||||
$data .= $block;
|
||||
$length -= mb_strlen($block, '8bit');
|
||||
}
|
||||
return substr($data, 0, -2);
|
||||
return mb_substr($data, 0, -2, '8bit');
|
||||
case '*': // Multi-bulk replies
|
||||
$count = (int) $line;
|
||||
$data = array();
|
||||
|
||||
Reference in New Issue
Block a user