Я написал сценарий PHP CLI, который выполняется в среде непрерывной интеграции. Одна из вещей, которую он делает, это то, что он выполняет тесты транспортира.
Мой план состоял в том, чтобы получить встроенный PHP 5.4 встроенный веб-сервер бежать в фоновом режиме:
php -S localhost:9000 -t foo/ bar.php &
А затем запустите тесты транспортира, которые будут использовать localhost:9000
:
protractor ./test/protractor.config.js
Однако встроенный веб-сервер PHP не работает в качестве фоновой службы. Я не могу найти ничего, что позволило бы мне сделать это с помощью PHP.
Можно ли это сделать? Если так, то как?
Если это абсолютно невозможно, я открыт для альтернативных решений.
Вы можете сделать это так же, как и любое приложение в фоновом режиме.
nohup php -S localhost:9000 -t foo/ bar.php > phpd.log 2>&1 &
Здесь nohup используется для предотвращения блокировки вашего терминала. Затем вам нужно перенаправить стандартный вывод (>
) и stderr (2>
).
Также вот способ остановить работу встроенного php сервера в фоновом режиме:
# 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 и т. Д.