PHP скриптът няма да работи във фонов режим

Опитвам се да стартирам php CLI скрипт във фонов режим и той просто не се изпълнява - има състояние Stopped SIGTOU (Опитва се да запише изход) - Ето подробностите

  • Mac OS X Lion 10.7.2
  • PHP 5.3.6 с Suhosin-Patch (cli) (създаден: 8 септември 2011 г. 19:34:00)

Създадох основен скрипт test.php

<?php echo 'Hello world'.PHP_EOL; ?>

Ето резултатите от различни тестове: -

  • php -f test.php (Показва се Hello world)
  • php -f test.php >test.log 2>&1 (Hello world се поставя в test.log)
  • php -f test.php >test.log 2>&1 & --- Получавам [1]+ Stopped(SIGTTOU) php -f test.php > test.log 2>&1 -- и работата просто си стои и не прави нищо, нищо не се регистрира, но lsof показва, че регистрационният файл е отворен

Има ли нещо общо с PHP? Подобен shell скрипт се изпълнява без проблеми във фонов режим.


person Rich06    schedule 19.11.2011    source източник
comment
SIGTTOU   -  person Marc B    schedule 19.11.2011


Отговори (3)


Ако readline е активиран във вашата компилация на php, просто подайте /dev/null като вход.

Във вашия пример по-горе би било:

php -f test.php </dev/null >test.log 2>&1
person Matthew Crenshaw    schedule 11.02.2012
comment
Добър съвет! За съжаление не мога да го тествам, тъй като преизградих PHP без поддръжка за readline сега .... :) - person Rich06; 12.02.2012

Това вече е разрешено - благодаря на всички, които се отзоваха. Проблемът беше, че Apple предостави PHP, предварително изграден с операционната система - CLI версията беше изградена с включен readline - http://www.php.net/manual/en/intro.readline.php ... това предотвратява изпълнението на скриптове във фонов режим, тъй като readline автоматично стартира IO с TTY ...

Проблемът ми беше, че не можах да създам моя собствена версия на PHP поради това -> http://forums.macrumors.com/showthread.php?t=1284479 - след като го разреших, проблемът със скрипта на заден план изчезна :)

person Rich06    schedule 04.12.2011

Е, един PHP скрипт спира, когато приключи изпълнението си, т.е. обикновеното ехо "Hello World" се изпълнява веднага щом изведе низа, предполагам, че има нещо общо с това ;-)

person Rasmus Styrk    schedule 19.11.2011
comment
Не бих обяснил SIGTTOU обаче (фонов процес се опитва да пише в TTY изход). - person ; 19.11.2011