sapi_windows_set_ctrl_handler

(PHP 7 >= 7.4.0, PHP 8)

sapi_windows_set_ctrl_handlerCTRLイベント のハンドラを設定したり削除したりする

説明

sapi_windows_set_ctrl_handler(?callable $handler, bool $add = true): bool

CTRL イベントのハンドラを設定したり削除したりします。 これによって、Windows の CLI プロセスが、 CTRL+CCTRL+BREAK イベントに割り込んだり、無視したり出来るようになります。 マルチスレッド環境では、この操作はメインスレッドからのみ可能です。

パラメータ

handler

設定したり削除したりするコールバック関数。 設定した場合、この関数は CTRL+C または CTRL+BREAK イベントが発生した場合にいつでも呼び出されます。 関数のシグネチャは次のとおりです:

handler(int $event): void
event
受け取った CTRL イベント; PHP_WINDOWS_EVENT_CTRL_C または PHP_WINDOWS_EVENT_CTRL_BREAK
nullhandler に設定すると、 CTRL+Cイベント をプロセスに無視させますが、 CTRL+BREAK イベントは無視しません。

add

true に設定し、ハンドラを設定します。 false の場合、ハンドラは削除されます。

戻り値

成功した場合に true を、失敗した場合に false を返します。

例1 基本的な sapi_windows_set_ctrl_handler() 関数の使い方

以下の例は、 CTRLイベント にどのように割り込むかを示しています。

<?php
function ctrl_handler(int $event)
{
    switch (
$event) {
        case 
PHP_WINDOWS_EVENT_CTRL_C:
            echo 
"You have pressed CTRL+C\n";
            break;
        case 
PHP_WINDOWS_EVENT_CTRL_BREAK:
            echo 
"You have pressed CTRL+BREAK\n";
            break;
    }
}

sapi_windows_set_ctrl_handler('ctrl_handler');
while (
true); // ハンドラがトリガできるように無限ループにする
?>

参考

関連キーワード:  CTRL, イベント, 設定, ハンドラ, 削除, handler, windows, ctrl, 関数, event