Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Process.php

function Process::wait

Waits for the process to terminate.

The callback receives the type of output (out or err) and some bytes from the output in real-time while writing the standard input to the process. It allows to have feedback from the independent process during execution.

Parameters

callable|null $callback A valid PHP callback:

Return value

int The exitcode of the process

Throws

ProcessTimedOutException When process timed out

ProcessSignaledException When process stopped after receiving signal

LogicException When process is not yet started

1 call to Process::wait()
Process::run in vendor/symfony/process/Process.php
Runs the process.

File

vendor/symfony/process/Process.php, line 436

Class

Process
Process is a thin wrapper around proc_* functions to easily start independent PHP processes.

Namespace

Symfony\Component\Process

Code

public function wait(?callable $callback = null) : int {
    $this->requireProcessIsStarted(__FUNCTION__);
    $this->updateStatus(false);
    if (null !== $callback) {
        if (!$this->processPipes
            ->haveReadSupport()) {
            $this->stop(0);
            throw new LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::wait".');
        }
        $this->callback = $this->buildCallback($callback);
    }
    do {
        $this->checkTimeout();
        $running = $this->isRunning() && ('\\' === \DIRECTORY_SEPARATOR || $this->processPipes
            ->areOpen());
        $this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running);
    } while ($running);
    while ($this->isRunning()) {
        $this->checkTimeout();
        usleep(1000);
    }
    if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) {
        throw new ProcessSignaledException($this);
    }
    return $this->exitcode;
}
RSS feed
Powered by Drupal