Server IP : 85.214.239.14 / Your IP : 3.145.10.108 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/2/cwd/proc/self/root/proc/self/root/proc/2/cwd/lib/node_modules/pm2/lib/ |
Upload File : |
/** * Copyright 2013-2022 the PM2 project authors. All rights reserved. * Use of this source code is governed by a license that * can be found in the LICENSE file. */ var chokidar = require('chokidar'); var util = require('util'); var log = require('debug')('pm2:watch'); module.exports = function ClusterMode(God) { /** * Watch folder for changes and restart * @method watch * @param {Object} pm2_env pm2 app environnement * @return MemberExpression */ God.watch = {}; God.watch._watchers = {}; God.watch.enable = function(pm2_env) { if (God.watch._watchers[pm2_env.pm_id]) { God.watch._watchers[pm2_env.pm_id].close(); God.watch._watchers[pm2_env.pm_id] = null; delete God.watch._watchers[pm2_env.pm_id]; } log('Initial watch ', pm2_env.watch) var watch = pm2_env.watch if(typeof watch == 'boolean' || Array.isArray(watch) && watch.length === 0) watch = pm2_env.pm_cwd; log('Watching %s', watch); var watch_options = { ignored : pm2_env.ignore_watch || /[\/\\]\.|node_modules/, persistent : true, ignoreInitial : true, cwd: pm2_env.pm_cwd }; if (pm2_env.watch_options) { watch_options = Object.assign(watch_options, pm2_env.watch_options); } log('Watch opts', watch_options); var watcher = chokidar.watch(watch, watch_options); console.log('[Watch] Start watching', pm2_env.name); watcher.on('all', function(event, path) { var self = this; if (self.restarting === true) { log('Already restarting, skipping'); return false; } self.restarting = true; console.log('Change detected on path %s for app %s - restarting', path, pm2_env.name); setTimeout(function() { God.restartProcessName(pm2_env.name, function(err, list) { self.restarting = false; if (err) { log('Error while restarting', err); return false; } return log('Process restarted'); }); }, (pm2_env.watch_delay || 0)); return false; }); watcher.on('error', function(e) { console.error(e.stack || e); }); God.watch._watchers[pm2_env.pm_id] = watcher; //return God.watch._watchers[pm2_env.name]; }, /** * Description * @method close * @param {} id * @return */ God.watch.disableAll = function() { var watchers = God.watch._watchers; console.log('[Watch] PM2 is being killed. Watch is disabled to avoid conflicts'); for (var i in watchers) { watchers[i].close && watchers[i].close(); watchers.splice(i, 1); } }, God.watch.disable = function(pm2_env) { var watcher = God.watch._watchers[pm2_env.pm_id] if (watcher) { console.log('[Watch] Stop watching', pm2_env.name); watcher.close(); delete God.watch._watchers[pm2_env.pm_id]; return true; } else { return false; } } };