webman通过代码restart

1619443919

目前我们是的项目(webman开发的)php start.php start -d 守护模式运行的,有些时候改了部分代码想直接通过访问某个控制器(webman项目内的一个链接)去实现php start.php restart -d的效果 ,以方便快速重启整个服务,目前是通过登录服务器去输入命令行实现重启,感觉挺麻烦的。有比较靠谱的办法么?

1652 3 1
3个回答

six

感觉restart 不好做到。reload我是用 posix_kill(SIGUSR1, posix_getppid());

  • six 2021-07-26

    上面代码错了,reload是 posix_kill( posix_getppid(), SIGUSR1);

  • 1619443919 2021-07-27

    @1393:这样好像是重启当前进程 不是重启整个服务吧

forgaoqiang

如何自己杀死自己并让自己重新启动的确是个问题,比较稳普的方案是再起一个服务专门干这个事情

话说默认process里面不是有监控文件变化自动重启么,理论上你推送代码上去它就自动重启了啊,这个特性是默认启用的

  • forgaoqiang 2021-07-27

    posix_kill(posix_getppid(), SIGUSR1)

    case \SIGUSR1:
    static::$_gracefulStop = $signal === \SIGQUIT;
    static::$_pidsToRestart = static::getAllWorkerPids();
    static::reload();

  • 1619443919 2021-07-27

    @8059:以-d守护模式运行的话 有代码更新也不会自动重启的

  • forgaoqiang 2021-07-29

    @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);
    }
    });
    }

  • forgaoqiang 2021-07-29

    @1619443919: 那你直接该写下 process 下面的 FileMonitor.php 不就行了

小v平台开发者

开放服务器exec执行命令吧,用管道异步操作

  • 暂无评论
年代过于久远,无法发表回答
🔝