Repository navigation
Health
$consul->Health wraps Consul's Health API.
[$entries, $qm, $err] = $consul->Health->Service(service: 'web', passingOnly: true);
foreach ($entries as $entry) {
// ServiceEntry: ->Node (Node), ->Service (AgentService), ->Checks (HealthChecks)
$addr = '' !== $entry->Service->Address ? $entry->Service->Address : $entry->Node->Address;
echo "{$entry->Node->Node} {$addr}:{$entry->Service->Port} " . $entry->Checks->AggregatedStatus() . "\n";
}Filter by tag with tag: 'v1', or use ServiceMultipleTags(service: 'web', tags: ['v1', 'primary']).
Connect / ConnectMultipleTags return Connect-capable instances (sidecars or native).
Node, Checks and State return a HealthChecks collection. You can iterate it, count it, and call
AggregatedStatus() on it:
use DCarbone\PHPConsulAPI\Consul;
[$checks, $qm, $err] = $consul->Health->Node(node: 'my-node');
echo $checks->AggregatedStatus(); // passing | warning | critical | maintenance
foreach ($checks as $check) {
echo "{$check->CheckID} {$check->Status}\n";
}
[$critical, $qm, $err] = $consul->Health->State(state: Consul::HealthCritical);
[$svcChecks, $qm, $err] = $consul->Health->Checks(service: 'web');State accepts Consul::HealthAny, HealthPassing, HealthWarning, HealthCritical and HealthMaint.
Ingress keeps an overloaded signature for backwards compatibility: Ingress(service, tagOrPassingOnly, passingOnlyOrOpts, opts).
Named arguments make it clearer:
[$entries, $qm, $err] = $consul->Health->Ingress(service: 'web', tagOrPassingOnly: true);Or use IngressMultipleTags(service: 'web', tags: [...], passingOnly: true).
All of these support blocking queries; see Query and Write Options and Responses and Errors.