Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HHVM回退到PHP-FPM_Php_Nginx_Hhvm - Fatal编程技术网

HHVM回退到PHP-FPM

HHVM回退到PHP-FPM,php,nginx,hhvm,Php,Nginx,Hhvm,我正在nginx上运行一个PHP应用程序,HHVM作为主应用程序,PHP-FPM作为备份 这是我关于php处理的nginx配置 location ~ \.(hh|php)$ { fastcgi_intercept_errors on; error_page 500 501 502 503 = @fallback; try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fast

我正在nginx上运行一个PHP应用程序,HHVM作为主应用程序,PHP-FPM作为备份

这是我关于php处理的nginx配置

  location ~ \.(hh|php)$ {
    fastcgi_intercept_errors on;
    error_page 500 501 502 503 = @fallback;

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_keep_conn on;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    127.0.0.1:9000;
  }

  location @fallback {

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    unix:/var/run/php5-fpm.sock;

  }
为了测试配置,我停止了hhvm服务。正常情况下,这会将请求传递给PHP-FPM,并返回200,但我得到502错误,如下所示:

12296#0: *17 connect() failed (111: Connection refused) while connecting to upstream, client: 172.31.34.235, server: stylep3.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host:localhost

我在这里做错了什么吗?

这是一种更简单的方法

首先定义一个上游,以hhvm和php fpm作为备份

upstream fastcgi_server {
  server unix:/var/run/hhvm/hhvm.sock;
  server unix:/var/run/php-fpm-mysite.sock backup;
}
然后只需使用
fastcgi\u服务器
就可以了,就好像它是唯一的后端一样,nginx处理故障转移工作,而不是您

fastcgi_pass fastcgi_server;
模块上游文档非常有启发性

总之,您的示例如下所示:

upstream php_backend {
  server 127.0.0.1:9000;
  server unix:/var/run/php5-fpm.sock backup;
}


server {
#
# other conf...
#

 location ~ \.(hh|php)$ {
    fastcgi_intercept_errors on;

    try_files $uri =404;

    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    fastcgi_keep_conn on;

    include         fastcgi_params;
    fastcgi_index   index.php;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param   SERVER_NAME $host;
    fastcgi_pass    php_backend;
  }

}

事实上,我也试过这个。我知道我写的是多余的,但由于这个配置不起作用,我用那种方式写了这个配置,但甚至会抛出错误。我发现,显然,根据官方指示,我在nginx vhost中包含了hhvm.conf,它似乎覆盖了php fpm并试图连接到它!移除它解决了问题problem@5ud0我有使用此配置运行的生产服务器,它运行得非常完美,对我来说也是如此,但hhvm似乎比php fpm慢得多,我知道它最初有JIT预热。@5ud0是的,预热对hhvm很重要,我有一个脚本运行
seake-b-f urls.txt-v
,30秒后,速度大大提高。