Yii 2のredis拡張機能の構成(本明細書ではYii 2 basic版を使用)

5007 ワード

公式に提供されるドキュメントのアドレス:https://github.com/yiisoft/yii2-redis/blob/master/docs/guide/README.md
  • 1.Yii 2をインストールするredis拡張
  • cd /www/html/basic
    php composer.phar require --prefer-dist yiisoft/yii2-redis

    2.basic/config/web.phpの構成
    components配列に次の内容を追加します.
    'redis' => [
        'class' => 'yii\redis\Connection',
        'hostname' => 'localhost',
        'port' => 6379,
        'database' => 0,
    ],
    

    3.使用
    $redis = Yii::$app->redis;
    $redis->get('key');
    $redis->set('k','v');

    追加(一部のエラー解決)
    basic/vendor/yisoft/yii 2-redis/connection.phpファイルのソースコードのうち265行が開始します(実際には異なります)
  • 変数errorNumber、errorDescriptionは、Yii 2を事前に定義せずにundefined
  • に報告する.
  • "@"は新聞を間違えて遮断して、ずっと原因を調べることができなくて、"@"を削除してやっとstreamを発見しましたsocket_client、stream_socket_server()の2つの関数は
  • を無効にしました.
    変更前
    $this->_socket = @stream_socket_client( 
                $this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port,
                $errorNumber,      
                $errorDescription,
                $this->connectionTimeout ? $this->connectionTimeout : ini_get("default_socket_timeout")
    );
    

    変更後
    //           ,        notice  ,       
    $errorNumber = '';
    $errorDescription = '';
    //----    :Warning:stream_socket_server() has been disabled for security reasons...         
    //----  "@" ↓↓↓       ,    "@"         ,
    $this->_socket = stream_socket_client( 
                $this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port,
                $errorNumber,      //----              undefined
                $errorDescription, //----              undefined
                $this->connectionTimeout ? $this->connectionTimeout : ini_get("default_socket_timeout")
    );
    

    解決方法:php.iniを編集してdisable_functions=...でstream_が見つかりましたsocket_server()、stream_socket_Client削除して保存し、webコンポーネントを再起動すればいい
    記事のソースアドレス:http://www.yiichina.com/tutorial/550