exec()関数を使用してPHP開発サーバーを起動および停止するにはどうすればよいですか? BDD テストを自動化するには、これを行う必要があります。
これにより、スクリプトの実行が停止します。
echo exec('php -S localhost:8000');
そのため、PHP からサーバーを起動し、テストの実行を続行できる方法が必要です。そして、それを PHP から停止する方法も必要です。
これは機能します:
private function _startDevelopmentServer($pidfile)
{
$cmd = 'cd ../../public && php -S 127.0.0.1:8027 index.php';
$outputfile = '/dev/null';
shell_exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
sleep(1);
}
private function _killDevelopmentServer($pidfile)
{
if (file_exists($pidfile)) {
$pids = file($pidfile);
foreach ($pids as $pid) {
shell_exec('kill -9 ' . $pid);
}
unlink($pidfile);
}
}
Apacheを停止しているためです。停止コマンドを処理しますが、その時点でサーバーが停止しているため、サーバーがコマンドを解析するためにそこにいないため、別のコマンドを処理する方法はありません。Apacheを停止して再起動するシェルスクリプトを作成し、PHPコードから呼び出します。Apacheが停止した場合でも、シェルスクリプトは実行を継続する必要があります。
サーバーはApacheだと思います。