(PHP 7 >= 7.4.0, PHP 8)
sapi_windows_set_ctrl_handler — CTRLイベント のハンドラを設定したり削除したりする
CTRL
イベントのハンドラを設定したり削除したりします。
これによって、Windows の CLI プロセスが、
CTRL+C
や CTRL+BREAK
イベントに割り込んだり、無視したり出来るようになります。
マルチスレッド環境では、この操作はメインスレッドからのみ可能です。
handler
設定したり削除したりするコールバック関数。
設定した場合、この関数は
CTRL+C
または CTRL+BREAK
イベントが発生した場合にいつでも呼び出されます。
関数のシグネチャは次のとおりです:
event
CTRL
イベント;
PHP_WINDOWS_EVENT_CTRL_C
または PHP_WINDOWS_EVENT_CTRL_BREAK
null
を handler
に設定すると、
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); // ハンドラがトリガできるように無限ループにする
?>