启动命令后访问服务器进程
Access to a server process after start command
我想创建一个 php 服务器。
我发出了异步启动服务器的命令。
我想下订单停止服务器。
我在 运行 启动命令后无法获取进程。
运行 命令
$server = new Server();
$pid = pcntl_fork();
if ($pid > 0) {
echo "Server Runned";
return;
}
$server->Run();
服务器Class
class Server {
private $_loop;
private $_socket;
public function __construct() {
$this->_loop = Factory::create();
$this->_socket = new ReactServer($this->_loop );
$this->_socket->on(
'connection',function ($conn) {
echo "Connection";
}
);
}
public static function Stop () {
$this->_loop-> stop();
}
public function Run () {
$this->_loop->run();
}
}
感谢您的帮助!
我的问题都解决了。
当我启动我的服务器时,我在系统的 tmp 目录中创建了一个文件。
在我的循环中,我检查这个文件是否已经存在。如果它被删除,我将停止循环。
所以,要停止我的服务器,我可以删除文件。
为了可以打开不同的服务器,我用主机和端口命名它(例如:~/127-0-0-1-8080.pid)。
class Loop
{
private $lockFile;
public static function getLockFile($address)
{
return sys_get_temp_dir().'/'.strtr($address, '.:', '--').'.pid';
}
public function __construct($address)
{
$this->lockFile = Loop::getLockFile($address);
touch($this->lockFile);
//...
}
public function run()
{
$this->running = true;
while ($this->running) {
if (!file_exists($this->lockFile)) {
$this->running = false;
echo "File Removed";
}
//...
}
}
public function stop()
{
$this->running = false;
unlink($this->lockFile);
}
}
启动命令:
$server = new Server($em, $port, $host);
$pid = pcntl_fork();
if ($pid > 0) {
$address = $host.":".$port;
echo "Server Starting " . $adresse;
}
$server->Run();
停止命令:
$host = '127.0.0.1';
$port = 5821;
$lockFile = Loop::getLockFile($host.":".$port);
unlink($lockFile);
echo "Server Stopped";
我想创建一个 php 服务器。 我发出了异步启动服务器的命令。 我想下订单停止服务器。 我在 运行 启动命令后无法获取进程。
运行 命令
$server = new Server();
$pid = pcntl_fork();
if ($pid > 0) {
echo "Server Runned";
return;
}
$server->Run();
服务器Class
class Server {
private $_loop;
private $_socket;
public function __construct() {
$this->_loop = Factory::create();
$this->_socket = new ReactServer($this->_loop );
$this->_socket->on(
'connection',function ($conn) {
echo "Connection";
}
);
}
public static function Stop () {
$this->_loop-> stop();
}
public function Run () {
$this->_loop->run();
}
}
感谢您的帮助!
我的问题都解决了。
当我启动我的服务器时,我在系统的 tmp 目录中创建了一个文件。 在我的循环中,我检查这个文件是否已经存在。如果它被删除,我将停止循环。
所以,要停止我的服务器,我可以删除文件。
为了可以打开不同的服务器,我用主机和端口命名它(例如:~/127-0-0-1-8080.pid)。
class Loop
{
private $lockFile;
public static function getLockFile($address)
{
return sys_get_temp_dir().'/'.strtr($address, '.:', '--').'.pid';
}
public function __construct($address)
{
$this->lockFile = Loop::getLockFile($address);
touch($this->lockFile);
//...
}
public function run()
{
$this->running = true;
while ($this->running) {
if (!file_exists($this->lockFile)) {
$this->running = false;
echo "File Removed";
}
//...
}
}
public function stop()
{
$this->running = false;
unlink($this->lockFile);
}
}
启动命令:
$server = new Server($em, $port, $host);
$pid = pcntl_fork();
if ($pid > 0) {
$address = $host.":".$port;
echo "Server Starting " . $adresse;
}
$server->Run();
停止命令:
$host = '127.0.0.1';
$port = 5821;
$lockFile = Loop::getLockFile($host.":".$port);
unlink($lockFile);
echo "Server Stopped";