PHP 8.3.4 Released!

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); // ハンドラがトリガできるように無限ループにする
?>

参考

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top