2015-05-15 11 views
6

Ho scritto uno script CLI PHP che viene eseguito su un ambiente di integrazione continua. Una delle cose che fa è eseguire i test dei goniometri.Come si esegue il server Web incorporato di PHP in background?

Il mio piano era quello di ottenere il built-in PHP 5.4's built-in web server per l'esecuzione in background: test goniometro

php -S localhost:9000 -t foo/ bar.php & 

e quindi eseguire che utilizzeranno localhost:9000:

protractor ./test/protractor.config.js 

Tuttavia, PHP built-in il server Web non viene eseguito come servizio in background. Non riesco a trovare nulla che mi permetta di fare questo con PHP.

Questo può essere fatto? Se é cosi, come? Se questo è assolutamente impossibile, sono aperto a soluzioni alternative.

+0

Stai dicendo di voler demonizzare il processo di php? Se si utilizza un sistema nix, è possibile esaminare gli script init.d. Non ho usato il server web di php5.4 ma se viene eseguito un processo può essere messo in background. – EdgeCaseBerg

risposta

14

È possibile farlo nello stesso modo in cui si eseguono applicazioni in background.

nohup php -S localhost:9000 -t foo/ bar.php > phpd.log 2>&1 & 

Qui, nohup viene utilizzato per impedire il blocco del terminale. È quindi necessario reindirizzare stdout (>) e stderr (2>).

0

qui è anche un modo per fermata built-in server php in esecuzione in backgroud:

# Run in the background as Devon advised 
nohup php -S localhost:9000 -t foo/ bar.php > phpd.log 2>&1 & 
# Get last background process PID 
PHP_SERVER_PID=$! 

# rinning tests and everything... 
protractor ./test/protractor.config.js 

# Send SIGQUIT to php built-in server running in background to stop it 
kill -3 $PHP_SERVER_PID 

Ciò è utile quando è necessario eseguire i test in qualche fase di CI, ecc

Problemi correlati