mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00

1) Prepended starting the server with "exec" so proc_terminate can correctly close it (see also this note http://www.php.net/manual/en/function.proc-get-status.php#93382 for details) 2) Moved putting down the server to the shutdown function to make it independent from tests (fatal) errors 3) Moved php cli executable into the function to make tests more readable 4) changed sleep(1) to usleep(50000) (50 ms) to make tests faster - this needs more testing and if timeout is too small should be increased
30 lines
733 B
PHP
30 lines
733 B
PHP
<?php
|
|
define ("PHP_CLI_SERVER_ADDRESS", "localhost:8964");
|
|
|
|
function php_cli_server_start($code = 'echo "Hello world";') {
|
|
$php_executable = getenv('TEST_PHP_EXECUTABLE');
|
|
$doc_root = __DIR__;
|
|
$router = "router.php";
|
|
file_put_contents($doc_root . '/' . $router, '<?php ' . $code . ' ?>');
|
|
|
|
$descriptorspec = array(
|
|
0 => STDIN,
|
|
1 => STDOUT,
|
|
2 => STDERR,
|
|
);
|
|
|
|
$cmd = "exec {$php_executable} -t {$doc_root} -S " . PHP_CLI_SERVER_ADDRESS . " {$router}";
|
|
|
|
$handle = proc_open($cmd, $descriptorspec, $pipes, $doc_root);
|
|
|
|
register_shutdown_function(
|
|
function($handle) {
|
|
proc_terminate($handle);
|
|
@unlink(__DIR__ . "/router.php");
|
|
},
|
|
$handle
|
|
);
|
|
|
|
usleep(50000);
|
|
}
|
|
?>
|