Php/docs/function.sapi-windows-set-ctrl-handler

提供:Dev Guides
< Php
移動先:案内検索

sapi_windows_set_ctrl_handler

(PHP 7 >= 7.4.0)

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


説明

sapi_windows_set_ctrl_handler ( callable $callable [, bool $add = true ] ) : bool

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


パラメータ

callable

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

handler ( int $event ) : void

event
受け取った CTRL イベント; PHP_WINDOWS_EVENT_CTRL_C または PHP_WINDOWS_EVENT_CTRL_BREAK

nullcallable に設定すると、 CTRL+Cイベント をプロセスに無視させますが、 CTRL+BREAK イベントは無視しません。

add

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


返り値

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


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

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


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

参考