目前我们是的项目(webman开发的)php start.php start -d 守护模式运行的,有些时候改了部分代码想直接通过访问某个控制器(webman项目内的一个链接)去实现php start.php restart -d的效果 ,以方便快速重启整个服务,目前是通过登录服务器去输入命令行实现重启,感觉挺麻烦的。有比较靠谱的办法么?
感觉restart 不好做到。reload我是用 posix_kill(SIGUSR1, posix_getppid());
上面代码错了,reload是 posix_kill( posix_getppid(), SIGUSR1);
@1393:这样好像是重启当前进程 不是重启整个服务吧
如何自己杀死自己并让自己重新启动的确是个问题,比较稳普的方案是再起一个服务专门干这个事情
话说默认process里面不是有监控文件变化自动重启么,理论上你推送代码上去它就自动重启了啊,这个特性是默认启用的
posix_kill(posix_getppid(), SIGUSR1)
case \SIGUSR1: static::$_gracefulStop = $signal === \SIGQUIT; static::$_pidsToRestart = static::getAllWorkerPids(); static::reload();
@8059:以-d守护模式运行的话 有代码更新也不会自动重启的
@1619443919:
public function __construct($monitor_dir, $monitor_extensions) { if (Worker::$daemonize) { //你把这行注释不就行了么 return; } $this->_paths = (array)$monitor_dir; $this->_extensions = $monitor_extensions; Timer::add(1, function () { foreach ($this->_paths as $path) { $this->check_files_change($path); } }); }
@1619443919: 那你直接该写下 process 下面的 FileMonitor.php 不就行了
开放服务器exec执行命令吧,用管道异步操作
感觉restart 不好做到。reload我是用 posix_kill(SIGUSR1, posix_getppid());
上面代码错了,reload是 posix_kill( posix_getppid(), SIGUSR1);
@1393:这样好像是重启当前进程 不是重启整个服务吧
如何自己杀死自己并让自己重新启动的确是个问题,比较稳普的方案是再起一个服务专门干这个事情
话说默认process里面不是有监控文件变化自动重启么,理论上你推送代码上去它就自动重启了啊,这个特性是默认启用的
posix_kill(posix_getppid(), SIGUSR1)
case \SIGUSR1:
static::$_gracefulStop = $signal === \SIGQUIT;
static::$_pidsToRestart = static::getAllWorkerPids();
static::reload();
@8059:以-d守护模式运行的话 有代码更新也不会自动重启的
@1619443919:
public function __construct($monitor_dir, $monitor_extensions)
{
if (Worker::$daemonize) { //你把这行注释不就行了么
return;
}
$this->_paths = (array)$monitor_dir;
$this->_extensions = $monitor_extensions;
Timer::add(1, function () {
foreach ($this->_paths as $path) {
$this->check_files_change($path);
}
});
}
@1619443919: 那你直接该写下 process 下面的 FileMonitor.php 不就行了
开放服务器exec执行命令吧,用管道异步操作