Стоп Пока истинный цикл с определенной или любой клавишей, нажатой в PHP-скрипте - PullRequest
1 голос
/ 08 июня 2010

Я хочу остановить цикл true, когда нажата определенная или любая клавиша.

Я знаю, что могу выполнить ctrl-c скрипт, но я блокирую таблицы в своей базе данных MySql, и я неЯ хочу разблокировать их в начале скрипта, потому что я хочу иметь возможность запускать несколько экземпляров скрипта.

Спасибо за понимание

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

Ctrl + C отправляет SIGINT, который по умолчанию немедленно завершает приложение или скрипт. Если вы построите уловку для этого, вы можете сделать скрипт более чистым.

<?php
declare(ticks = 1);

pcntl_signal(SIGTERM, "sig_handle");
pcntl_signal(SIGINT, "sig_handle");
$TERMINATE = false;

function sig_handle($signal)
{
    switch($signal)
    {
        case SIGTERM:
            print "Got SIGTERM\n";
            $TERMINATE = true;
        break;
        case SIGKILL:
            print "Got SIGKILL\n";
            $TERMINATE = true;
        break;
        case SIGINT:
            print "User pressed Ctrl+C - Got SIGINT\n";
            $TERMINATE = true;
        break;
    }
}


while(true)
{
     // Do everything and anything - though infinite loops, not the best idea.
     if( $TERMINATE )
     {
            // Perform all cleaning functions.
            // Then break the loop
            break 2;
     }
}

// Just because Ctl+C was passed it only broke the loop, you can add other hooks into your program to help capture this break and more quickly terminate your script.
?>
1 голос
/ 08 июня 2010

Вы можете проверить расширение медсестры.Не задокументировано, но ncurses_getch должно быть тем, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...