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

Breadcrumb

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

function SignalHandler::create

@phpstan-param list<self::SIG*|int> $signals @phpstan-param LoggerInterface|(callable(self::SIG* $name, SignalHandler $self): void) $loggerOrCallback

Parameters

(string|int)[] $signals array of signal names (more portable, see SignalHandler::SIG*) or constants - defaults to [SIGINT, SIGTERM]:

LoggerInterface|callable $loggerOrCallback A PSR-3 Logger or a callback($signal, $signalName):

Return value

self A handler on which you can call isTriggered to know if the signal was received, and reset() to forget

4 calls to SignalHandler::create()
CreateProjectCommand::installRootPackage in vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php
InstallationManager::execute in vendor/composer/composer/src/Composer/Installer/InstallationManager.php
Executes solver operation.
ProcessExecutor::runProcess in vendor/composer/composer/src/Composer/Util/ProcessExecutor.php
RequireCommand::execute in vendor/composer/composer/src/Composer/Command/RequireCommand.php

File

vendor/seld/signal-handler/src/SignalHandler.php, line 361

Class

SignalHandler
SignalHandler and factory

Namespace

Seld\Signal

Code

public static function create(?array $signals = null, $loggerOrCallback = null) : self {
    if ($signals === null) {
        $signals = [
            self::SIGINT,
            self::SIGTERM,
        ];
    }
    $signals = array_map(function ($signal) {
        if (is_int($signal)) {
            return self::getSignalName($signal);
        }
        elseif (!in_array($signal, self::ALL_SIGNALS, true)) {
            throw new \InvalidArgumentException('$signals must be an array of SIG* constants or self::SIG* constants, got ' . var_export($signal, true));
        }
        return $signal;
    }, (array) $signals);
    $handler = new self($signals, $loggerOrCallback);
    if (PHP_VERSION_ID >= 80000) {
        array_unshift(self::$handlers, WeakReference::create($handler));
    }
    else {
        array_unshift(self::$handlers, $handler);
    }
    if (function_exists('sapi_windows_set_ctrl_handler') && PHP_SAPI === 'cli' && (in_array(self::SIGINT, $signals, true) || in_array(self::SIGBREAK, $signals, true))) {
        if (null === self::$windowsHandler) {
            self::$windowsHandler = Closure::fromCallable([
                self::class,
                'handleWindowsSignal',
            ]);
            sapi_windows_set_ctrl_handler(self::$windowsHandler);
        }
    }
    if (function_exists('pcntl_signal') && function_exists('pcntl_async_signals')) {
        pcntl_async_signals(true);
        self::registerPcntlHandler($signals);
    }
    return $handler;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal