composer Когда происходит сбой встроенного сервера PHP, порт все еще используется

Я использую встроенный сервер PHP так:

$ composer serve
> php -S localhost:8000 -t public/

Но время истекло ..?

[Symfony\Component\Process\Exception\ProcessTimedOutException]
The process "php -S localhost:8080 -t public/" exceeded the timeout of 300 seconds.

Итак, я попытался запустить его снова:

$ composer serve
> php -S localhost:8000 -t public/
[Thu May 26 21:31:51 2016] Failed to listen on localhost:8000 (reason: Address already in use)
Script php -S localhost:8000 -t public/ handling the serve event returned with error code 1

Почему тот же порт, на котором работал сервер до истечения времени ожидания, все еще используется? Могу ли я остановить все экземпляры PHP, встроенные в сервер?

Если это имеет значение, ниже находится мой файл composer.json:

{
.
.
.
"scripts": {
"serve": "php -S localhost:8000 -t public/"}
}

1

Решение

Проблема в том, что у композитора есть тайм-аут по умолчанию через 300 секунд.

При выполнении команды вы можете использовать --timeout=0это отключает тайм-аут. В вашем примере команда будет выглядеть так composer run-script server --timeout=0

4

Другие решения

Вы можете установить время ожидания процесса в вашем composer.json файл как это:

  {
...
"scripts": {
"start": "php -S 127.0.0.1:80 .router.php -t public"},
"config": {
"process-timeout": 0
}
}

и запустите веб-сервер следующим образом:

$ composer start

0

По вопросам рекламы [email protected]