2

まず第一に、英語が下手で申し訳ありません。私の質問に答えていただければ幸いです。

良い質問をします。かなり複雑かもしれませんが、私はそのトピックの初心者です。

nginxサーバーを使用してcentos 6.4 64ビットで動作するcakephpバージョン2.4で動作するアプリケーションがあり、うまく動作しています。

アプリケーションの一部を node.js に統合する必要がありますが、問題があります。これは、cakephp のセッション (ファイル キャッシュ) を知る必要があり、それぞれを構成するために 1 日中読んだり試したりしていたためです。最初にセッションファイルを直接読み取ってテストを行ってみましたが、安全性が非常に低く、データの解析が難しく、最後の理由は node.js ができないため、正しくないことがわかりました。私のcakephpアプリケーションに接続しているユーザーはnode.jsと同じです。

次に、それについてさらに読むと、memcachedまたはredisキャッシュを使用すると各アプリケーションを一致させることが可能であることがわかりました.memcachedをインストールしようとしました.centosにredisをインストールした後、インストール中はすべて問題ありませんでしたが、これを使用してcakephpアプリケーションを配置しようとしたとき:

Core.php

$engine = 'Redis';

ブートストラップ.php

Cache::config('default', array('engine' => 'Redis'));

常にcakephpで次のエラーが表示されます:

16:58:57 エラー: [CacheException] キャッシュ エンジンのデフォルトが正しく構成されていません。スタックトレース:

0 /var/www/public_html/project/lib/Cake/Cache/Cache.php(151): キャッシュ::_buildEngine('デフォルト')

1 /var/www/public_html/project/app/Config/bootstrap.php(28): キャッシュ::config('デフォルト', 配列)

2 /var/www/public_html/project/lib/Cake/Core/Configure.php(92): include('/var/www/public...')

3 /var/www/public_html/project/lib/Cake/bootstrap.php(177): 構成::ブートストラップ(true)

4 /var/www/public_html/project/app/webroot/index.php(92): include('/var/www/public...')

5 {メイン}


そして、nginxでRedisについて何かを設定する必要があるかどうかはわかりません(memcachedについては、cakephpでも同じことが起こりました)。

nginx では、次の構成がありました。

ユーザー nginx; worker_processes 2;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

イベント{

worker_connections  4000;
# essential for linux, optmized to serve many clients with each thread
use epoll;

# Accept as many connections as possible, after nginx gets notification about  
    #a new connection.
# May flood worker_connections, if that option is set too low.
multi_accept on;

}

http {

include       /etc/nginx/mime.types;
default_type  application/octet-stream;
sendfile        on;

# Caches information about open FDs, freqently accessed files.
# Changing this setting, in my environment, brought performance up from 560k req/sec, to 904k req/sec.
# I recommend using some varient of these options, though not the specific values listed below.
open_file_cache max=200000 inactive=20s; 
open_file_cache_valid 30s; 
open_file_cache_min_uses 2;
open_file_cache_errors on;

#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

server {
    listen       80;
    server_name  dev.project;
    
    client_max_body_size 2m;
    access_log  /var/log/nginx/cakeapp.access.log;
    error_log   /var/log/nginx/cakeapp.error.log;
    rewrite_log on;
    root    /var/www/public_html/project/app/webroot;    
    index   index.php;
 
    # Not found this on disk?
    # Feed to CakePHP for further processing!
    if (!-e $request_filename) {
            rewrite ^/(.+)$ /index.php?url=$1 last;
            break;
    }

    # Pass the PHP scripts to FastCGI server
    # listening on 127.0.0.1:9000
    location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_intercept_errors on; # to support 404s for PHP files no$
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }

    # Deny access to .htaccess files,
    # git & svn repositories, etc
    location ~ /(\.ht|\.git|\.svn) {
            deny  all;
    }
}

# Compression. Reduces the amount of data that needs to be transferred over 
    # the network
gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-7]\.";

}

Cakephp のセッションを Redis に接続するために必要なヒントを教えてください。

もう1つ、cliでredisを試してみましたが、setとgetでテストを行って問題なく動作していました。

ありがとうございます。

PD。そのプロジェクトはすべて、仮想ボックス マシンで作業しています

4

1 に答える 1

0

私はちょうどこれに遭遇しました。進行中の 2 つのうちの 1 つがあります。Redis のキャッシュを構成できるかどうかわかりません。構成が不完全なようです。サーバーパラメータが必要だと思います。memcached のキャッシュ構成をコピーして、Redis 用に更新してみてください。もう 1 つの問題は、Redis が実行されていないことです。これが私にとって最後の問題でした。Redis を起動して、もう一度テストします。

于 2013-12-06T05:00:21.250 に答える