ZendHQ 3.1.0
New features
-
Added native TLS support for the ZendHQ daemon's WebSocket interface.
The ZendHQ daemon can now terminate TLS connections (
wss://) directly, without requiring a reverse proxy such as nginx in front of it. Customers supply their own X.509 certificate and private key through newzendhqd.websocket.interface.configuration options..tls Any certificate trusted by the UI client machines — issued by a public CA, an internal corporate CA, or reused from an existing wildcard certificate — can be used.
-
Added PHP node fleet data collection.
The ZendHQ daemon now tracks every connected PHP runtime as a PHP node and records identification, runtime and platform details for each one, including loaded extensions and a configurable set of reported PHP INI directives. The data is exposed to external clients (e.g. the ZendHQ UI) through the new JSON-RPC namespace fleet. Administrators can use the new
zendhqctlfleet module (list, print, watch, ini).The set of reported PHP INI directives is administrator-configurable and can be reset to the bundled defaults at any time.
Changes
-
Added a queue-level retry-mode attribute to the Job Queue.
A queue can now be configured with retry-mode set to blocking (default, the queue is blocked by the job waiting for its retry) or reschedule (the failed job is rescheduled and other jobs in the queue keep running).
The retry mode is also exposed in the PHP Job Queue API through the new
ZendHQ\JobQueue\QueueDefinition::RETRY_MODE_BLOCKINGandRETRY_MODE_RESCHEDULEconstants, an optional third$retryModeconstructor argument, and thegetRetryMode()/setRetryMode()methods.Notice that retry mode reschedule can cause jobs to be executed out of order. If order must be preserved, use blocking mode.
-
Modified the
jq.get_job_historyJSON-RPC method to page job history entries in completion-time order using an opaque cursor request parameter.When the cursor parameter is present, the method returns a wrapped object with a tasks array and a
next_cursortoken, and the entries are ordered by the time the jobs completed, most recent first. Echo the opaquenext_cursortoken back in the cursor parameter to fetch the next page; it isnullon the last page.Requests without a cursor parameter keep the previous behavior (a bare array of entries in job creation order, paged with
last_id) for backwards compatibility with older clients. -
Modified the
zendhqctl jobqueue job historysub-command to page job history in completion-time order using the new--cursor TOKENoption.Job history entries are now listed in the order the jobs completed, most recent first. The previous
--last-id IDoption has been removed; while more pages remain, an opaque token is printed to standard error, which can be passed back with--cursorto fetch the next page. The--sort-timeoption is now accepted but has no effect, as entries are always ordered by completion time.
Bug fixes
- The PHP Job Queue API
ZendHQ\JobQueue\JobQueueconstructor now connects to the ZendHQ daemon as documented, throwingNetworkErrorwhen the daemon cannot be reached instead of deferring the connection to the first operation.
New API and database schema versions
- zend-rpc API version is now 20260511,
- JSON-RPC
fleetnamespace API version is now 1.0. - JSON-RPC
sessionnamespace API version is now 1.14. - JSON-RPC
jqnamespace API version is now 1.5. - Job Queue database schema version is now 2.4.