Version 2.2 - gregtampa/PHP-Daemon GitHub Wiki

We're planning to start working on a 2.2 release in October with an alpha hopefully by the new year. I'm open to any feedback on direction and priority.

PHP-Daemon 2.2 Release Plan

  • Improved error handling in worker processes. Currently if a worker process dies the job is not retried until the timeout is reached. Instead by listening to the SIGCHLD the worker sends to the parent on exit the mediator can be informed instantly of the error condition. Big thanks to @soulhunter1987 for doing some research and a proof of concept on this.

  • Namespace the code (along with possibly changing the directory structure).

  • Refactoring as needed for dependency injection to make the code more testable. And then write some tests. There are several things that would be difficult or impossible to test using unit tests, there's a lot that IS testable and I'll focus on writing tests with the highest ROI at first.

  • Remove the feature that outputs an Upstart init script. I speculate that this is hardly used (if ever) and I added it only because it was easy to do. And it is. But I've given it no attention in 2 years so it's obviously not an important feature.

  • Improve the Debug Shell. I learned a lot of things building that I can apply here. Among them, optional integration with readline that will be enabled if the readline pecl extension is installed and silently disable that functionality when it's not.

  • Investigate moving to a PHP 5.4 dependency. We'd have the $that = $this closure bug fixed, a Callable type hint, and scores of bug fixes. I'll probably do this.

  • Finish work done on the Socket plugin and produce an example app.

  • Use the abstract IPC work done in v2.1 and actually produce another Core_IWorkerVia option in addition to the SysV version that's been used since v2.0 was released 18 months ago.

  • Performance improvements. While a multi-process application in PHP will never be what i would call "fast", there are certainly some areas in the current codebase that can be honed with patience and a profiler.