まず第一に、英語が下手で申し訳ありません。私の質問に答えていただければ幸いです。
良い質問をします。かなり複雑かもしれませんが、私はそのトピックの初心者です。
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。そのプロジェクトはすべて、仮想ボックス マシンで作業しています