2

好吧,首先我很抱歉我的英语不好,我希望能回答我的问题。

很好,我会做我的问题,也许它很复杂,但我是那个话题的新手。

我有一个使用 cakephp 版本 2.4 的应用程序,它使用 nginx 服务器在 centos 6.4 64 位上运行,并且运行良好。

现在我需要将我的应用程序的一部分与 node.js 集成并且有一个问题,这是因为我需要知道我的 cakephp 的会话(文件缓存),并且我整天都在阅读/尝试配置每个其他应用程序,我尝试首先直接读取会话文件只是为了进行测试,但我知道它不正确,因为它非常不安全,而且很难解析数据,最后一个原因是它的 node.js 不能匹配连接到我的 cakephp 应用程序的用户与 node.js 相同。

然后阅读更多关于它的信息,我发现如果我使用 memcached 或 redis 缓存,则可以匹配每个应用程序,并且我尝试安装 memcached,并且在 centos 上安装 redis 之后,安装过程中一切正常,但是当我尝试使用以下命令安装我的 cakephp 应用程序时:

核心.php

$engine = 'Redis';

引导程序.php

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

总是 cakephp 给我下一个错误:

16:58:57 错误:[CacheException] 缓存引擎默认配置未正确配置。堆栈跟踪:

0 /var/www/public_html/project/lib/Cake/Cache/Cache.php(151): Cache::_buildEngine('default')

1 /var/www/public_html/project/app/Config/bootstrap.php(28): Cache::config('default', Array)

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): 配置::bootstrap(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;

错误日志/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 连接?

我用 cli 尝试了 redis 的另一件事,并且运行良好,使用 set 和 get 进行测试并且工作正常。

先谢谢了。

PD。所有该项目都在虚拟机上运行

4

1 回答 1

0

我刚碰到这个。发生了两件事之一。我不确定您是否可以为 Redis 配置缓存,看起来您的配置不完整。我认为您需要服务器参数。尝试为 memcached 复制缓存配置并为 Redis 更新它。另一个问题可能是 Redis 没有运行。这对我来说是最后一个问题。启动 Redis 并再次测试。

于 2013-12-06T05:00:21.250 回答