2016-02-18 7 views
2

Я запускаю php-скрипты из CLI, и я хотел бы выполнить функцию, когда скрипт остановился с помощью ctrl + c. Я пробовал:PHP SIGTERM в CLI

<?php 

declare(ticks = 1); 

function sigint() { 
    echo 'This is the end'; 
    exit; 
} 

pcntl_signal(SIGTERM, 'sigint'); 

$i = 1; 

do { 

    echo $i++ . ' '; 

    sleep(1); 

} while (TRUE); 

но это не работает. Как я могу это сделать?

+2

использовать SIGINT вместо SIGTERM – Nadir

+0

@nadir OP хочет, чтобы принять его в качестве ответа. Пожалуйста, сделайте это как ответ. Танк ты. – vaso123

ответ

1

При установке обработчика в pcntl_signal, используйте SIGINT вместо SIGTERM

+0

Возможно, было бы безопаснее подключать обработчики для обоих сигналов. [Связанный вопрос о том, какие сигналы являются фатальными] (http://stackoverflow.com/questions/13219071/which-fatal-signals-should-a-user-level-program-catch) – amphetamachine

+0

Ну, в зависимости от того, что OP хочет достичь , Если он только хочет обработать Ctrl-c, этого достаточно. – Nadir