a0e654d981
* 2.7: [HttpKernel] Fix test Remove port from default host in server:status command [Console] Escape exception messages
80 lines
2.3 KiB
PHP
80 lines
2.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Bundle\FrameworkBundle\Command;
|
|
|
|
use Symfony\Component\Console\Input\InputArgument;
|
|
use Symfony\Component\Console\Input\InputInterface;
|
|
use Symfony\Component\Console\Input\InputOption;
|
|
use Symfony\Component\Console\Output\OutputInterface;
|
|
use Symfony\Component\Console\Style\SymfonyStyle;
|
|
|
|
/**
|
|
* Shows the status of a process that is running PHP's built-in web server in
|
|
* the background.
|
|
*
|
|
* @author Christian Flothmann <christian.flothmann@xabbuh.de>
|
|
*/
|
|
class ServerStatusCommand extends ServerCommand
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function configure()
|
|
{
|
|
$this
|
|
->setDefinition(array(
|
|
new InputArgument('address', InputArgument::OPTIONAL, 'Address:port', '127.0.0.1'),
|
|
new InputOption('port', 'p', InputOption::VALUE_REQUIRED, 'Address port number', '8000'),
|
|
))
|
|
->setName('server:status')
|
|
->setDescription('Outputs the status of the built-in web server for the given address')
|
|
;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function execute(InputInterface $input, OutputInterface $output)
|
|
{
|
|
$io = new SymfonyStyle($input, $output);
|
|
$address = $input->getArgument('address');
|
|
|
|
if (false === strpos($address, ':')) {
|
|
$address = $address.':'.$input->getOption('port');
|
|
}
|
|
|
|
// remove an orphaned lock file
|
|
if (file_exists($this->getLockFile($address)) && !$this->isServerRunning($address)) {
|
|
unlink($this->getLockFile($address));
|
|
}
|
|
|
|
if (file_exists($this->getLockFile($address))) {
|
|
$io->success(sprintf('Web server still listening on http://%s', $address));
|
|
} else {
|
|
$io->warning(sprintf('No web server is listening on http://%s', $address));
|
|
}
|
|
}
|
|
|
|
private function isServerRunning($address)
|
|
{
|
|
list($hostname, $port) = explode(':', $address);
|
|
|
|
if (false !== $fp = @fsockopen($hostname, $port, $errno, $errstr, 1)) {
|
|
fclose($fp);
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|