Explorar o código

update incr method and redis flatten argument to fix redis call error

朱金辉 %!s(int64=2) %!d(string=hai) anos
pai
achega
b990e81b84
Modificáronse 4 ficheiros con 9 adicións e 6 borrados
  1. 2 2
      src/Cache/Redis/Client.php
  2. 1 0
      src/Config/Mine.php
  3. 1 1
      src/Config/Namespace.php
  4. 5 3
      src/Driver/EasyORM.php

+ 2 - 2
src/Cache/Redis/Client.php

@@ -1091,8 +1091,8 @@ class Client {
                     //$param_ref =& $args[0];
                     break;
                 default:
-                    // Flatten arguments
-                    $args = self::_flattenArguments($args);
+                    // Flatten arguments 此处_flattenArguments会导致部分redis的方法调用失效
+                    //$args = self::_flattenArguments($args);
             }
 
             try {

+ 1 - 0
src/Config/Mine.php

@@ -86,6 +86,7 @@ class Mine
         'm13' => 'application/x-msmediaview',
         'm14' => 'application/x-msmediaview',
         'm3u' => 'audio/x-mpegurl',
+        'm3u8' => 'video/x-mpegurl',
         'man' => 'application/x-troff-man',
         'mdb' => 'application/x-msaccess',
         'me' => 'application/x-troff-me',

+ 1 - 1
src/Config/Namespace.php

@@ -48,6 +48,6 @@ return array(
         array('Smarty', Qii_DIR . DS . 'View' . DS . 'smarty'),
         array('Smarty', Qii_DIR . DS . 'View' . DS . 'smarty' . DS . 'sysplugins'),
         array('WhichBrowser', Qii_DIR . DS . 'Library'. DS . 'Third'. DS . 'WhichBrowser'),
-        array('BigPipe', Qii_DIR . DS . 'Library'. DS .'BigPipe'. DS .'BigPipe')
+        array('BigPipe', Qii_DIR . DS . 'Library'. DS .'BigPipe'. DS .'BigPipe'),
     )
 );

+ 5 - 3
src/Driver/EasyORM.php

@@ -522,17 +522,19 @@ final class EasyORM {
         $incrFields = array();
         $privateKeys = $this->getPrivateKey();
         foreach ($value as $key => $step) {
-            if($step <= 0) continue;
             //去掉private的值
             if(in_array($key, $privateKeys)) continue;
+            if($step == 0) continue;
+            if($step < 0) {
+                $incrFields[$key .":minus"] = $step * -1;
+                continue;
+            }
             $incrFields[$key .':plus'] = $step;
         }
         if(count($incrFields) == 0){
             return Response::FailUpdate('_incr', array('_result' => '未指定incr的步长'));
         }
-
         $fieldsAndValues = $this->getWhereCondition();
-
         $result = $this->_easyORM->db
             ->set($incrFields)
             ->where($fieldsAndValues)