Причиной тому является определенное поведение PHP-интерпретатора когда он теряет связь с запустившим его клиентом, а в данном случае — с вводом командной строки.
Если изучить PHP-документацию по работе с соединениями, то оттуда можно узнать что таким поведением можно управлять при помощи директивы конфигурации или же функции вызываемой непосредственно в самом PHP-скрипте — ignore_user_abort. Однако эта функция не всегда помогает.
Итак, решение очень простое — нужно дать PHP-скрипту то, что ему нужно — поток ввода, который он будет считать клиентом и не будет завершать свою работу:
http://www.php.net/manual/ru/features.connection-handling.php
Итак, решение очень простое — нужно дать PHP-скрипту то, что ему нужно — поток ввода, который он будет считать клиентом и не будет завершать свою работу:
$ php -q script.php < /dev/null > script.log &Либо воспользоваться утилитой nohup
nohup php -q script.php > script.log 2>&1 &Еще один альтернативный способ из wikipedia с использованием программы screen:
$ screen -A -m -d -S somename ./somescript.sh &
http://www.php.net/manual/ru/features.connection-handling.php
Комментариев нет:
Отправить комментарий