All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Event
LoopErrorOccurredEvent
(triggered on request processing exception) - Listener
SendExceptionToStderrListener
for direct exception sending (as a string) intostderr
- Listener
StopWorkerListener
for worker stopping
- Default package configuration includes
LoopErrorOccurredEvent
event listeners:SendExceptionToStderrListener
andStopWorkerListener
#42 - When "debug mode" (
app.debug
) is not enabled - client will get onlyInternal server error
string instead exception with stacktrace #42
- Double response sending on request processing error (calling
$psr7_client->respond
and$psr7_client->getWorker()->error
after that)
- Updated
symfony/psr-http-message-bridge
to allow^2.0
#41
- Dependency
zendframework/zend-diactoros
replaced withlaminas/laminas-diactoros
- Worker PSR7 fabric method uses
Laminas\Diactoros\ResponseFactory
as ResponseFactory (insteadZend\Diactoros\ResponseFactory
) - Minimal required version of
spiral/roadrunner
package changed from~1.6
to~1.7
- Maximal
illuminate/*
packages version now is7.*
- Unused dev-dependency
jeremeamia/superclosure
- Macroses binds in
InjectStatsIntoRequestListener
(functions now not-static)
- Wrong links (server schema or/and port) generation (default configuration updated, listeners order is important) (closes #27)
- Package was totally rewrote
- Events for interaction with worker loop:
BeforeLoopStartedEvent
BeforeLoopIterationEvent
BeforeRequestHandlingEvent
AfterRequestHandlingEvent
AfterLoopIterationEvent
AfterLoopStoppedEvent
- Listeners:
BindRequestListener
ClearInstancesListener
CloneConfigListener
FixSymfonyFileValidationListener
ForceHttpsListener
InjectStatsIntoRequestListener
RebindHttpKernelListener
RebindRouterListener
RebindViewListener
ResetDbConnectionsListener
ResetProvidersListener
ResetSessionListener
RunGarbageCollectorListener
SetServerPortListener
UnqueueCookiesListener
Spiral\RoadRunner\PSR7Client
instance in application containers (closes #21)- Environment variable
APP_REFRESH
supports - Package configuration file
- PHP
7.4
supports - GitHub actions for a tests running
- Maximal
illuminate/*
packages version now is6.*
- Middleware
SetServerPortMiddleware
for automatic settingSERVER_PORT
in server parameters bag if it does not set before (value based on request schema; this middleware fixes empty port value likehttps://127.0.0.1:/
when exposed default port without setSERVER_PORT
) - Environment variable
RR_WORKER_CLASS
supports for overriding default worker class (watch in./bin/rr-worker
) - Docker-based environment for development
- Project
Makefile
- Allowed RR configuration options (
http.fcgi.*
,http.http2.*
,headers.*
) (do not forget update your existing config files) - Minimal
Laravel
version now is5.5.x
- Minimal
spiral/roadrunner
version now is^1.4.6
- Composer scripts
- Package service-provider automatically register
SetServerPortMiddleware
middleware - Constant
RULE_METHOD_PREFIX
inCallbacksInitializer
class now protected - Constants
BOOL_OPTION_INVERT_LOGIC_NAME_PREFIX
andOPTIONS_PREFIX
inStartOptions
class now protected - Method
start()
must returnsvoid
inWorkerInterface
interface
- Dev-dependency
avto-dev/dev-tools
- Laravel v5.8 supports
- Minimal
php
version now is7.1.3
- Minimal
illuminate/*
andlaravel/*
package versions now is>=5.8
- Minimal
spiral/roadrunner
version now is^1.4
- RR Config option
trustedSubnets
- RR Config option
limit
- RR Config option
maxRequest
has been deprecated in favor ofmaxRequestSize
- Worker option
--not-fix-symfony-file-validation
for disabling upload mechanism fix
- Middleware
ForceHttpsMiddleware
now setHTTPS
server parameter toon
(required for correct working request methods like ::isSecure and others)
- Worker option
--(not-)inject-stats-into-request
for injecting macroses into request object for accessing timestamp and allocated memory size (before request processing) values
- Small fix for previous feature (added
unset()
for$kernel
)
- Supports option
--(not-)refresh-app
- Methods
Worker->getDefaultAppBasePath()
andWorker->getDefaultAppBootstrapPath()
(resolve order)
- Forcing https schema (using env variable) method
- First release