m6web / php-process-manager-bundle
此包已废弃,不再维护。没有建议的替代包。
PHP进程管理包
v1.2.2
2016-06-23 15:50 UTC
Requires
- php: ^5.5|^7.0
- react/react: ^0.4
- symfony/symfony: ^2.7|^3.0
Requires (Dev)
- atoum/atoum: ^2.1
- m6web/coke: ^2.1
- m6web/symfony2-coding-standard: ^3.1
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
高级设置(负载均衡)
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; } }