Releases: lucasnetau/php-ec
Round up release
Support defining code based input sources and actions.
- Input Source functions are defined via extending the SourceFunction class
- Action functions
- Loop is initialised in the Scheduler constructors instead of delaying till run()
- Input and Action processes can be defined using an array of parameters rather than an escaped string
- Improved startup recovery and system state table
- Reduced memory and cycles by using spl_object_id instead of spl_object_hash
- Logs and exit if a rule throws
- Support setting process names for child processes
Error edge case
Correctly detect if error recovery was successful
Constructor for Event objects can now accept a DateTimeInterface or a unixtime int for setting datetime
Full Changelog: v0.5.7...v0.5.8
Incremental Improvements
Improve Signal handling
Improve save state failures
Improve admin console
- can defined a HOST and PORT via ENV
- JIT statistics now displayed
Increase JSON buffer
State may be bigger than the default 64K for JSON decoding. Increase the buffer to 10MB
Improve failed save handling
Small bug fixes
PHP8.2 Support
Add AllowDynamicProperties attribute to Event class to silence PHP8.2 deprecation notice
Various small improvements
Drop the CPU
Replaced React\Filesystem with a Child Process based offload for save state saving, a huge reduction in CPU time and reduced external dependancies
Opcache statistics are now visible in the administration interface
Heartbeat delay
Allow heartbeat to have a delayed startup.
Heartbeat
Add a configurable realtime heartbeat event to be injected into a running engine
Failed Action Recovery
Implement failed action recovery on restart by replaying actions before starting up any input processes. This could be failed actions due to engine failure (killed by OOM or hardware failure) or due to a misconfiguration or resource unavailability (eg database offline)
Add in additional metrics for tracking how long it takes to do the async save time and size of the save state file, exposed via the management server.
Add $essential flag to input processes to shutdown the engine if the process fails to start or shutdowns cleanly
Full Changelog: v0.4.4...v0.5