array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.sapi-windows-set-ctrl-handler.php', 1 => 'sapi_windows_set_ctrl_handler', ), 'up' => array ( 0 => 'ref.misc.php', 1 => 'その他の関数', ), 'prev' => array ( 0 => 'function.sapi-windows-generate-ctrl-event.php', 1 => 'sapi_windows_generate_ctrl_event', ), 'next' => array ( 0 => 'function.sapi-windows-vt100-support.php', 1 => 'sapi_windows_vt100_support', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/misc/functions/sapi-windows-set-ctrl-handler.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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
例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); // ハンドラがトリガできるように無限ループにする
?>