[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8283":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":9,"rankLanguage":9,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":15,"starSnapshotCount":15,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},8283,"php-pm","php-pm\u002Fphp-pm","PPM is a process manager, supercharger and load balancer for modern PHP applications.","",null,"PHP",6554,370,221,26,0,1,38.71,"MIT License",false,"master",true,[23,24,25,26],"application-server","php7","psr7","symfony","2026-06-12 02:01:51","PPM - PHP Process Manager\n====================================================\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Favatars3.githubusercontent.com\u002Fu\u002F11821812?v=3&s=200\" \u002F>\n\u003C\u002Fp>\n\nPHP-PM is a process manager, supercharger and load balancer for PHP applications.\n\n![Build Status](https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm\u002Fworkflows\u002FCS%20&%20PHPStan%20&%20Phpunit%20&%20Integration%20Tests\u002Fbadge.svg)\n[![Gitter](https:\u002F\u002Fbadges.gitter.im\u002Fphp-pm\u002Fphp-pm.svg)](https:\u002F\u002Fgitter.im\u002Fphp-pm\u002Fphp-pm?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)\n\nIt's based on ReactPHP and works best with applications that use request-response frameworks like Symfony's HTTPKernel.\nThe approach of this is to kill the expensive bootstrap of PHP (declaring symbols, loading\u002Fparsing files) and the bootstrap of feature-rich frameworks. See Performance section for a quick hint.\nPHP-PM basically spawns several PHP instances as worker bootstraping your application (eg. the whole Symfony Kernel) and hold it in the memory to be prepared for every\nincoming request: This is why PHP-PM makes your application so fast.\n\nMore information can be found in the article: [Bring High Performance Into Your PHP App (with ReactPHP)](https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20190103202024\u002Fhttp:\u002F\u002Fmarcjschmidt.de\u002F2014\u002F02\u002F08\u002Fphp-high-performance\u002F)\n\n### Features\n\n* Performance boost up to 15x (compared to PHP-FPM, Symfony applications).\n* Integrated load balancer.\n* Hot-Code reload (when PHP files change).\n* Static file serving for easy development procedures.\n* Support for HttpKernel (Symfony\u002FLaravel), Drupal (experimental), Zend (experimental).\n\n### Badge all the things\n\nDoes your app\u002Flibrary support PPM? Show it!\n\n[![PPM Compatible](https:\u002F\u002Fraw.githubusercontent.com\u002Fphp-pm\u002Fppm-badge\u002Fmaster\u002Fppm-badge.png)](https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm)\n\n```\n[![PPM Compatible](https:\u002F\u002Fraw.githubusercontent.com\u002Fphp-pm\u002Fppm-badge\u002Fmaster\u002Fppm-badge.png)](https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm)\n```\n\n#### Use\n\n```bash\ncd into\u002Fyour-application\n\n# run Symfony\ndocker run -v \"$(pwd):\u002Fvar\u002Fwww\" -p 8080:80 phppm\u002Fnginx --bootstrap=symfony --static-directory=web\u002F\n\n# run Laravel\ndocker run -v \"$(pwd):\u002Fvar\u002Fwww\" -p 8080:80 phppm\u002Fnginx --bootstrap=laravel --static-directory=public\u002F\n```\n\nDocker is easier to setup and maintain. If your applications requires additional environment tools or libraries,\nyou can build your own image based on ours. See [github.com\u002Fphp-pm\u002Fphp-pm-docker](https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm-docker) for more information.\n\nWhen `debug` is enabled, PHP-PM detects file changes and restarts its worker automatically.\n\n#### Use without Docker\n\nFollow the wiki article [Use without Docker](https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm\u002Fwiki\u002FUse-without-Docker).\n\n#### Performance\n\nTo get the maximum performance you should usually use `--app-env=prod` with disabled\ndebug `--debug=0`. Also make sure xdebug is disabled. Try with different amount of workers.\nUsually a 10% over your cpu core count is good. Example: If you have 8 real cores (excl. hyper-threading) use `--workers=9`.\n\nTo get even more performance (for static file serving or for rather fast applications) try a different event loop (see https:\u002F\u002Fgithub.com\u002Freactphp\u002Fevent-loop).\n\n#### Debugging\n\nIf you get strange issues in your application and you have no idea where they are coming from try\nusing only one worker `--workers=1` and enable `-v` or `-vv`. \n\nWhen debugging you should use xdebug as you're used to. If you set a break point and hold the application, then only one\nworker is stopped until you release the break point. All other workers are fully functional. \n\n**Note for XDebug and PHPStorm**: Since php-pm uses at least two processes, there are two xdebug instances as well. PHPStorm is per default configured to only accept one connection at a time. You need to increase that. You won't get xdebug working with your application if you don't increase that count.\n\n![Xdebug and PHPStorm](https:\u002F\u002Fraw.githubusercontent.com\u002Fphp-pm\u002Fassets\u002Fmaster\u002Fxdebug-phpstorm.png)\n\nIn all workers the STDOUT is redirected to the connected client. So take care, `var_dump`, `echo` are not displayed on the console.\nSTDERR is not redirected to the client, but to the console. So, for very simple debugging you could use `error_log('hi')` and you'll see it on the console.\nPer default exceptions and errors are only displayed on the console, prettified with Symfony\u002FDebug component.\n\n### Adapter\n\n**HttpKernel for Symfony\u002FLaravel** - https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm-httpkernel\n\n**Zend** - https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm-zend\n\n**CakePHP** - https:\u002F\u002Fgithub.com\u002FCakeDC\u002Fcakephp-phppm\n\n### Command\n\n![ppm-help](https:\u002F\u002Fraw.githubusercontent.com\u002Fphp-pm\u002Fassets\u002Fmaster\u002Fhelp-screenshot.png)\n\n![ppm-start](https:\u002F\u002Fraw.githubusercontent.com\u002Fphp-pm\u002Fassets\u002Fmaster\u002Fstart-command.png)\n\n\n#### Symfony\n\n```bash\ncd my-project\ndocker run -v `pwd`:\u002Fvar\u002Fwww -p 8080:80 phppm\u002Fnginx --static-directory=web\u002F\n```\n\n#### Laravel\n\n```bash\ncd my-project\ndocker run -v `pwd`:\u002Fvar\u002Fwww -p 8080:80 phppm\u002Fnginx --bootstrap=laravel --static-directory=web\u002F\n```\n\n#### Zend\n\n```bash\ncd my-project\ndocker run -v `pwd`:\u002Fvar\u002Fwww -p 8080:80 phppm\u002Fnginx --bootstrap=Zf2\n```\n\n#### Wordpress\n\nFor all Wordpress lovers out there: PPM is not going to work with Wordpress due to the lack of request-response abstraction.\nWe highly doubt that Wordpress is ever going to be compatible because its architecture is written in a way that makes it\ncurrently impossible to serve multiple requests in one application process.\n\n### Performance (requests\u002Fs)\n\n6x4GHz Intel i7, 16GB RAM. 10 concurrent, 1000 total request: `ab -c 10 -n 1000 http:\u002F\u002F127.0.0.1:8080\u002F`\n\n#### Symfony, CMS application\n\n`ppm start --bootstrap=symfony --app-env=prod --logging=0 --debug=0 --workers=20`\n\nhttps:\u002F\u002Fgithub.com\u002Fjarves\u002Fjarves\n\n| PHP Version              | Dynamic at Jarves | Static file |\n|--------------------------|-------------------|-------------|\n| 7.0.3, StreamSelectLoop  | 2387,67           | 3944,52     |\n| 5.6.18, StreamSelectLoop | 1663,56           | 2636,09     |\n| 5.6.18, LibEventLoop     | 1811,76           | 3441,72     |\n\n#### Laravel, example package\n\nhttps:\u002F\u002Fgithub.com\u002Fbestmomo\u002Flaravel5-example\n\n`ppm start --bootstrap=laravel --app-env=prod --debug=0 --logging=0 --workers=20`\n\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fphp-pm\u002Fassets\u002Fmaster\u002Flaravel.png\" \u002F>\n\u003C\u002Fp>\n\n## Issues\n\n* Memory leaks, memory leaks and memory leaks. You will also find leaks in your application. :) But no big issue since workers restart automatically.\n* Does not work with ExtEventLoop. (So don't install `php70-event`, but you can try LibEventLoop `php56-libevent`)\n* Drupal and Zend is very experimental and not fully working. Try using https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm-drupal.\n* Laravel's debugger isn't working perfectly yet since it's still needed to reset some stuff after each request.\n* Streamed responses are not streamed yet\n* No windows support due to signal handling\n\nPlease help us fix these issues by creating pull requests. :)\n\n### Setup\n\nWe provide ready-to-use docker images you can use right away.\nIf you have own setup, see in the [PHP-PM docker repository](https:\u002F\u002Fgithub.com\u002Fphp-pm\u002Fphp-pm-docker) how to integrate PHP-PM in your NGiNX setup.\n\n#### Trusted proxy Symfony\n \nTo get the real remote IP in your Symfony application for example, don't forget to add ppm (default `127.0.0.1`)\nas trusted reverse proxy.\n\n```yml\n# app\u002Fconfig\u002Fconfig.yml\n# ...\nframework:\n    trusted_proxies:  [127.0.0.1]\n```\n\nMore information at http:\u002F\u002Fsymfony.com\u002Fdoc\u002Fcurrent\u002Fcookbook\u002Frequest\u002Fload_balancer_reverse_proxy.html.\n","PHP-PM 是一个针对现代 PHP 应用的进程管理器、加速器和负载均衡器。它基于 ReactPHP，通过预加载应用框架（如 Symfony 的 HTTPKernel）并保持在内存中，以减少每次请求时的启动开销，从而显著提升性能，最高可达 15 倍。项目支持热代码重载、静态文件服务，并兼容 HttpKernel（如 Symfony 和 Laravel）、Drupal 和 Zend 等多种框架。PHP-PM 特别适合需要高性能处理能力且使用请求-响应模式的应用场景，无论是开发还是生产环境都能有效提高应用响应速度与稳定性。",2,"2026-06-11 03:17:09","top_language"]