tamerlib/CHANGELOG.md

85 lines
4.5 KiB
Markdown
Raw Normal View History

2023-02-28 21:36:48 -05:00
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2023-07-07 00:22:35 -04:00
## [2.1.0] - Unreleased
### Added
- Implemented `ausleep()` in for `TamerLib\Classes\ > JobManager` to allow TamerLib to monitor sub-processes and
workers without blocking the main thread.
- Updated some methods in `TamerLib\Classes\ > JobManager` to use properties from `JobPacket` instead of calling
the server for the same information if the passed parameter (usually $job_id) is an instance of `JobPacket`,
this reduces the number of calls to the server and improves performance.
- Updated some methods in `TamerLib > tm` to use `asleep` instead of `sleep` to allow TamerLib to monitor sub-processes
and workers without blocking the main thread.
- Added a custom redis configuration file to improve performance when running TamerLib on a single machine.
### Changed
- `\TamerLib\Classes\ > RedisServer > start()` now starts the server with a matching logging level to `net.nosial.loglib`
2023-07-07 00:22:35 -04:00
- Changed method `public static function do(string $function, array $arguments=[], int $channel=0): int`
to `public static function do(string $function, array $arguments=[], ?callable $callback=null, array $options=[]): int` in `\TamerLib > tm > do()`
so that the `$callback` parameter is now optional and will be used to handle the result of the job when `tm::wait()`
is called, additionally some options can be passed to the job such as `channel` for passing on the channel to the
function as previously done with the `$channel` parameter.
- Changed method `public static function dof(string $function, array $arguments=[], int $channel=0): void` to
`public static function dof(string $function, array $arguments=[], array $options=[]): void` in `\TamerLib > tm > dof()`
to represent the changes made to `tm::do()` as described above.
- Changed method `public static function wait(?callable $callback=null, int $timeout=0): void` to
`public static function wait(int $timeout=0): void` as the function itself will now handle the result of the job
using the callback passed to `tm::do()` or `tm::dof()` when the job is done.
### Fixed
- Fixed synchronization issue in TamerLib where callbacks would run indefinitely if further jobs were added to the
queue while the callback was running.
2023-06-30 00:59:20 -04:00
## [2.0.1] - 2023-06-30
Minor bugfixes and improvements.
### Fixed
- Fixed bug where `\TamerLib > tm > run()` would return early even if the `$timeout` is set to 0.
### Changed
- `\TamerLib > tm > do()` the parameter `$callback` is now optional. If not provided, the job result will not be
handled by the client and just be discarded.
2023-06-30 00:59:20 -04:00
2023-06-18 17:22:57 -04:00
## [2.0.0] - 2023-06-18
2023-02-28 21:36:48 -05:00
2023-06-18 17:22:57 -04:00
This version of TamerLib offers a comprehensive framework for implementing parallel processing in PHP applications.
With features aimed at scalability and robust handling of tasks and exceptions, it allows developers to build efficient,
reliable applications.
This makes previous versions of TamerLib obsolete, and as such, this version is not backwards compatible with previous
versions.
### Added
- Parallel Processing: Utilize the full power of your CPU by executing tasks concurrently using sub-processes or
remote processes.
- Task Queuing: Tasks are managed using a task queue and result queue, making it easy to keep track of tasks and their
results.
- Horizontal Scalability: TamerLib allows the creation of Tamer Nodes which act as supervisors for workers. Nodes and
workers communicate with a central Redis Server, enabling applications to scale horizontally.
- Exception Handling: Exception handling is built into TamerLib, allowing developers to catch and handle exceptions
thrown by workers.
- Introduced `tm::initialize`, `tm::createWorker` for client setup and worker creation respectively.
- Added methods `tm::do` and `tm::wait` to manage job execution and completion tracking.
- `tm::initialize`, `tm::addFunction` and `tm::run` have been added to help with setting up and managing workers.
- Node implementation introduced, allowing supervision of workers and horizontal scaling of applications.
- Workers can now throw exceptions which are caught and re-thrown on the client side.
This allows for robust error handling across different parts of the application.
2023-03-01 18:56:05 -05:00
## [1.0.1] - 2022-02-28
2023-02-28 21:38:55 -05:00
2023-03-01 18:56:05 -05:00
### Added
2023-02-28 21:36:48 -05:00
- Added more logging calls for Gearman Client
## [1.0.0] - 2022-02-09
### Added
- Initial release