roadrunner

๐Ÿคฏ High-performance PHP application server, process manager written in Go and powered with plugins

MIT License

Downloads
5.5M
Stars
7.7K
Committers
58

Bot releases are hidden (Show)

roadrunner - v2.3.1

Published by rustatian over 3 years ago

๐Ÿ‘€ New:

  • โœ๏ธ Rework broadcast plugin. Add architecture diagrams to the doc folder. PR
  • โœ๏ธ Add Clear method to the KV plugin RPC. PR

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: Bug with channel deadlock when exec_ttl was used and TTL limit reached PR
  • ๐Ÿ› Fix: Bug with healthcheck endpoint when workers were marked as invalid and stay is that state until next request PR
  • ๐Ÿ› Fix: Bugs with boltdb storage: Boom, Boom, Boom
  • ๐Ÿ› Fix: Bug with incorrect Redis initialization and usage Bug
  • ๐Ÿ› Fix: Bug, Goridge duplicate error messages Bug
  • ๐Ÿ› Fix: Bug, incorrect request origin check Bug

๐Ÿ“ฆ Packages:

  • ๐Ÿ“ฆ Update goridge to v3.1.4
  • ๐Ÿ“ฆ Update temporal to v1.0.8

๐Ÿ“ˆ Summary:

roadrunner - v2.3.0

Published by rustatian over 3 years ago

  • โœ๏ธ Meet the new plugin websockets with broadcast capabilities that replace old broadcast and broadcast-ws plugins. It can handle hundreds of thousands of websocket connections simultaneously (~300k messages per second with 1k connected clients, in-memory bus on 2CPU cores and 1GB of RAM) Issue
  • โœ๏ธ Protobuf binary messages for the websockets and kv RPC calls under the hood. Issue
  • โœ๏ธ Native protobuf support for the PHP <-> GO RPC calls. It can perform more than 10% better than previously used JSON encoding/decoding for the RPC calls (especially for the KV plugin calls with a lot of Items).
  • โœ๏ธ Support file logger with log rotation Wiki, Issue

On top of that we released some new improvements:

  • โœ๏ธ Json-schemas for the config file v1.0 (it also registered in schemastore.org)
  • โœ๏ธ latest docker image tag supported now (but we strongly recommend using a versioned tag (like 0.2.3) instead)
  • โœ๏ธ Add new option to the http config section: internal_error_code to override default (500) internal error code. Issue
  • โœ๏ธ Expose HTTP plugin metrics (workers memory, requests count, requests duration). Issue
  • โœ๏ธ Scan server.command and find errors related to the wrong path to a PHP file, or .ph, .sh scripts. Issue

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: Bug with informer.Workers worked incorrectly: Bug
  • ๐Ÿ› Fix: Internal error messages will not be shown to the user (except HTTP status code). An error message will be in logs: Bug
  • ๐Ÿ› Fix: An error message will be properly shown in the log in case of SoftJob error: Bug
  • ๐Ÿ› Fix: Wrong applied middlewares for the fcgi server leads to the NPE: Bug

๐Ÿ“ฆ Packages:

  • ๐Ÿ“ฆ Update goridge to v3.1.3
  • ๐Ÿ“ฆ Update endure to v1.0.2
roadrunner - v2.2.1

Published by rustatian over 3 years ago

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: revert static plugin. It stays as a separate plugin on the main route (/) and supports all the previously announced features.
  • ๐Ÿ› Fix: remove build and other old targets from the Makefile.
roadrunner - v2.2.0

Published by rustatian over 3 years ago

๐Ÿ‘€ New:

  • โœ๏ธ Reworked static plugin. Now, it does not affect the performance of the main route and persist on the separate
    file server (within the http plugin). Looong awaited feature: Etag (+ weak Etags) as well with the If-Mach
    , If-None-Match, If-Range, Last-Modified and If-Modified-Since tags supported. Static plugin has a bunch of new options such as: allow, calculate_etag, weak and pattern.

    Option always was deleted from the plugin.

Docs: static

  • โœ๏ธ Update informer.List implementation. Now it returns a list with the all available plugins in the runtime.

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: issue with wrong ordered middlewares (reverse). Now the order is correct.
  • ๐Ÿ› Fix: issue when RR fails if a user sets debug mode with the exec_ttl supervisor option.
  • ๐Ÿ› Fix: uniform log levels. Use everywhere the same levels (warn, error, debug, info, panic).
roadrunner - v2.1.1

Published by rustatian over 3 years ago

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: issue with endure provided wrong logger interface implementation.
roadrunner - v2.1.0

Published by rustatian over 3 years ago

๐Ÿ‘€ New:

  • โœ๏ธ New service plugin. Docs: link
  • โœ๏ธ Stabilize kv plugin with boltdb, in-memory, memcached and redis drivers. PHP part will be available a little bit later.

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: Logger didn't provide an anonymous log instance to plugins w/o Named interface implemented.
  • ๐Ÿ› Fix: http handler was without log listener after rr reset.
roadrunner - v2.0.4

Published by rustatian over 3 years ago

๐Ÿ‘€ New:

  • ๐Ÿ†• Add support for linux/arm64 platform for docker image (thanks @tarampampam).
  • ๐Ÿ†• Add dotenv file support (.env in working directory by default; file location can be changed using CLI flag --dotenv or DOTENV_PATH environment variable) (thanks @tarampampam).
  • ๐Ÿ“œ Add a new raw mode for the logger plugin to keep the stderr log message of the worker unmodified (logger severity level should be at least INFO).
  • ๐Ÿ†• Add Readiness probe check. The status plugin provides /ready endpoint which returns the 503 HTTP code if there are no workers in the Ready state and 200 OK status if there are at least 1 worker in the Ready state.
  • ๐Ÿ†• New option unavailable_status_code for the status plugin.

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: bug with the temporal worker which does not follow general graceful shutdown period.
roadrunner - v2.0.3

Published by rustatian over 3 years ago

๐Ÿฉน Fixes:

  • ๐Ÿ› Fix: slow last response when reached max_jobs limit.
roadrunner - v2.0.2

Published by rustatian over 3 years ago

๐Ÿ”ฅ New:

  • ๐Ÿ‘ท Rework ServeHTTP handler logic. Use http.Error instead of writing code directly to the response writer.
  • โšก Builds for the Mac with the M1 processor (arm64) -> roadrunner-binary.
  • โšก HTTP/FCGI/HTTPS internal logs instead of going to the raw stdout will be displayed via the RR logger at the Info log level.

๐Ÿฉน Fixes:

  • ๐Ÿ› Bug with required Root CA certificate for the SSL, now it's optional.
  • ๐Ÿ› Bug with incorrectly consuming metrics collector from the RPC calls (thanks @dstrop).
roadrunner - v2.0.1

Published by rustatian over 3 years ago

  • ๐Ÿ› Fix: incorrect PHP command validation
  • ๐Ÿ› Fix: ldflags properly inject RR version
  • โฌ†๏ธ Update: README, links to the go.pkg from v1 to v2
  • ๐Ÿ“ฆ Bump golang version in the Dockerfile and in the go.mod to 1.16
  • ๐Ÿ“ฆ Bump Endure container to v1.0.0.
roadrunner - v2.0.0

Published by rustatian over 3 years ago

  • โœ”๏ธ Added shared server to create PHP worker pools instead of isolated worker pool in each individual plugin.
  • โœ”๏ธ New plugin system with auto-recovery, easier plugin API.
  • โœ”๏ธ New logger plugin to configure logging for each plugin individually.
  • ๐Ÿ” Up to 50% performance increase in HTTP workloads.
  • โœ”๏ธ Added Temporal Workflow plugin to run distributed computations on scale.
  • โœ”๏ธ Added debug flag to reload PHP worker ahead of request (emulates PHP-FPM behavior).
  • โŒ Eliminated limit service, now each worker pool includes supervisor configuration.
  • ๐Ÿ†• New resetter, informer plugins to perform hot reloads and observe loggers in a system.
  • ๐Ÿ’ซ Exposed more HTTP plugin configuration options.
  • ๐Ÿ†• Headers, static and gzip services now located in HTTP config.
  • ๐Ÿ†• Ability to configure the middleware sequence.
  • ๐Ÿ’ฃ Faster Goridge protocol (eliminated 50% of syscalls).
  • โœ”๏ธ Added support for binary payloads for RPC (msgpack).
  • ๐Ÿ†• Server no longer stops when a PHP worker dies (attempts to restart).
  • ๐Ÿ’ฅ New RR binary server downloader.
  • โšก Echoing no longer breaks execution (yay!).
  • ๐Ÿ†• Migration to uber zap-logger instead of Logrus.
  • ๐Ÿ’ฅ RR can no longer be stuck when studding down with broken tasks in pipeline.
  • ๐Ÿงช More tests, more static analysis.
  • ๐Ÿ’ฅ Created a new foundation for new KV, WebSocket, GRPC and Queue plugins.
roadrunner - v1.9.2

Published by rustatian almost 4 years ago

  • Distinguish app errors and errors from the RR in the HTTP service. Request, Doc
  • CI update (golangci to version 1.35)
roadrunner - v1.9.1

Published by rustatian almost 4 years ago

  • Add rr --version flag support (thanks @tarampampam)
  • Update reload plugin, remove unnecessary goroutines and locks.
  • Add objectives to the metrics summary.
  • Automated releases build (thanks @tarampampam).
roadrunner - v1.9.0

Published by rustatian almost 4 years ago

  • Update PHP minimal supported version to 7.3
  • Support PHP 8.0
  • Update Ubuntu version in GHA to 20.04
  • Update Golang version in the RR Dockerfile to 1.15.5
roadrunner - v1.8.4

Published by rustatian almost 4 years ago

  • Update Goridge go dep to 2.4.6
roadrunner - v1.8.3

Published by rustatian about 4 years ago

  • Fix superfluous response.WriteHeader issue.
  • Proper handle of broken pipe error on Linux and Windows.
  • PCI DSS compliant upgrade (thanks @antonydevanchi).
  • Fix HSTS header (thanks @antonydevanchi).
  • Add Request and Response headers to static files (thanks @siad007).
  • Add user_namespaces check when running RR worker from a particular user.

Full milestone can be found here: Link

roadrunner - v1.8.2

Published by rustatian over 4 years ago

  • Bugfix release (purge proxy cache only for self builds)
roadrunner - v1.8.1

Published by rustatian over 4 years ago

  • Update goridge version to 2.4.4
  • Fix code warnings from phpstan
  • Improve RPC
  • Create templates for the Bug reporting and Feature requests
  • Move docker images from golang-alpine to regular golang images
  • Add support for the CloudFlare CF-Connecting-IP and True-Client-IP headers (thanks @vsychov)
  • Add support for the Root CA via the rootCa .rr.yaml option
  • See the full milestone here: link
roadrunner - v1.8.0

Published by rustatian over 4 years ago

  • Update goridge version to 2.4.0
  • Update PHP version to the 7.2 (currently minimum supported)
  • See the full milestone here: link
roadrunner - v1.7.1

Published by rustatian over 4 years ago

  • Syscall usage optimized. Now the data is packing and sending via 1 (or 2 in some cases) send_socket calls, instead of 2-3 (by @vvval)
  • Unix sockets in Windows (AF_UNIX) now supported.
  • Systemd unit file now in the root of the repository. Feel free to read the docs about running RR as daemon on Linux based systems.
  • Added ability to run the worker process from the particular user on Linux-based systems. Make sure, that the user have the permissions to run the script. See the config, option user.
  • Fixed: vendor directory conflict with golang part of the application. Now php uses vendor_php directory for the dependencies.
  • Goridge updated to version 2.3.2.
  • Deprecated Zend dependency replaced with Laminas-diactoros.
  • See the full log: Milestone