m6web/php-process-manager-bundle

此包已废弃,不再维护。没有建议的替代包。

PHP进程管理包

安装量 11,424

依赖项: 0

建议者: 0

安全性: 0

星标: 102

关注者: 37

分支: 12

开放性问题: 3

类型:symfony-bundle

v1.2.2 2016-06-23 15:50 UTC

This package is auto-updated.

Last update: 2021-09-27 13:02:22 UTC


README

将高性能引入您的Symfony应用!

为了杀死昂贵的PHP和Symfony启动,此包添加了一个简单的symfony命令来使用ReactPHP启动进程管理器。

此PHP进程管理器是针对Symfony的,旨在与像supervisord这样的进程控制系统一起使用 - 更可靠且避免重新发明轮子。

灵感来源于php-pm

命令

php app/console m6web:http-process [listening-port]

可用选项

  • --memory-max - 当达到指定的内存量(以MB为单位)时,优雅地停止正在运行的命令(退出代码10)
  • --check-interval - 用来周期性检查是否应该停止守护进程的间隔(以秒为单位)

快速入门

安装包

composer require m6web/php-process-manager-bundle

在AppKernel.php中

 new M6Web\Bundle\PhpProcessManagerBundle\M6WebPhpProcessManagerBundle(),

启动命令

php app/console m6web:http-process 8000

然后打开http://localhost:8000

高级设置(负载均衡)

Advanced setup (load balancing)

Symfony

安装包

composer require m6web/php-process-manager-bundle

在AppKernel.php中

 new M6Web\Bundle\PhpProcessManagerBundle\M6WebPhpProcessManagerBundle(),

Supervisord

8个工作进程的示例,从8000监听到8007

[program:mysfproject]
command=php -d memory_limit=1024M app/console m6web:http-process 80%(process_num)02d --env=dev --memory-max=768 --check-interval=60 ; the program (relative uses PATH, can take args)
process_name=%(program_name)s-%(process_num)d ; process_name expr (default %(program_name)s)
numprocs=8                     ; number of processes copies to start (def 1)
directory=/path/to/symfony/    ; directory to cwd to before exec (def no cwd)
umask=022                      ; umask for process (default None)
user=www-data                  ; setuid to this UNIX account to run the program
stdout_logfile=/var/log/supervisord/%(program_name)s-%(process_num)d.log              ; stdout log path, NONE for none; default AUTO
stderr_logfile=/var/log/supervisord/%(program_name)s-%(process_num)d-error.log        ; stderr log path, NONE for none; default AUTO

NGiNX

NGiNX和8个工作进程的示例配置

upstream backend  {
    server 127.0.0.1:8000 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8001 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8002 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8003 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8004 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8005 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8006 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8007 max_fails=1 fail_timeout=5s;
}

server {
    root /path/to/symfony/web/;
    server_name servername.com;
    location / {
        try_files $uri @backend;
    }
    location @backend {
        proxy_pass http://backend;
        proxy_next_upstream http_502 timeout error;
        proxy_connect_timeout 1;
        proxy_send_timeout 5;
        proxy_read_timeout 5;
    }
}

NGiNX和8个工作进程的示例配置,带有php-fpm回退

upstream backend  {
    server 127.0.0.1:8000 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8001 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8002 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8003 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8004 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8005 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8006 max_fails=1 fail_timeout=5s;
    server 127.0.0.1:8007 max_fails=1 fail_timeout=5s;
}

server {
    root /path/to/symfony/web/;
    server_name servername.com;

    location / {
        try_files $uri @phppm;
    }

    location @phppm {
        proxy_pass http://backend;
        proxy_next_upstream http_502 timeout error;
        proxy_connect_timeout 1;
        proxy_send_timeout 5;
        proxy_read_timeout 5;

        proxy_intercept_errors on;
        recursive_error_pages on;
        error_page 502 = @phpfpm;
    }

    location @phpfpm {
        try_files $uri /app_local.php$is_args$args;
    }

    location ~ ^/app_local\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;

        include       /etc/nginx/fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_pass  unix:/var/run/php-fpm/www.sock;
    }
}