diff --git a/src/applications/daemon/management/PhabricatorDaemonManagementDebugWorkflow.php b/src/applications/daemon/management/PhabricatorDaemonManagementDebugWorkflow.php --- a/src/applications/daemon/management/PhabricatorDaemonManagementDebugWorkflow.php +++ b/src/applications/daemon/management/PhabricatorDaemonManagementDebugWorkflow.php @@ -58,6 +58,7 @@ $config, ), $is_debug = true, + $foreground = true, $run_as_current_user); } diff --git a/src/applications/daemon/management/PhabricatorDaemonManagementLaunchWorkflow.php b/src/applications/daemon/management/PhabricatorDaemonManagementLaunchWorkflow.php --- a/src/applications/daemon/management/PhabricatorDaemonManagementLaunchWorkflow.php +++ b/src/applications/daemon/management/PhabricatorDaemonManagementLaunchWorkflow.php @@ -17,7 +17,11 @@ ->setArguments( array( array( - 'name' => 'argv', + 'name' => 'foreground', + 'help' => pht('Start daemons in the foreground.'), + ), + array( + 'name' => 'argv', 'wildcard' => true, ), )); @@ -50,7 +54,10 @@ $daemons = array_fill(0, $daemon_count, $daemon); - $this->launchDaemons($daemons, $is_debug = false); + $this->launchDaemons( + $daemons, + $is_debug = false, + $args->getArg('foreground')); return 0; } diff --git a/src/applications/daemon/management/PhabricatorDaemonManagementStartWorkflow.php b/src/applications/daemon/management/PhabricatorDaemonManagementStartWorkflow.php --- a/src/applications/daemon/management/PhabricatorDaemonManagementStartWorkflow.php +++ b/src/applications/daemon/management/PhabricatorDaemonManagementStartWorkflow.php @@ -25,6 +25,10 @@ 'name' => 'force', 'help' => pht('Start daemons even if daemons are already running.'), ), + array( + 'name' => 'foreground', + 'help' => pht('Start daemons in the foreground.'), + ), $this->getAutoscaleReserveArgument(), )); } @@ -33,8 +37,9 @@ return $this->executeStartCommand( array( 'keep-leases' => $args->getArg('keep-leases'), - 'force' => $args->getArg('force'), - 'reserve' => (float)$args->getArg('autoscale-reserve'), + 'force' => $args->getArg('force'), + 'foreground' => $args->getArg('foreground'), + 'reserve' => (float)$args->getArg('autoscale-reserve'), )); } diff --git a/src/applications/daemon/management/PhabricatorDaemonManagementStatusWorkflow.php b/src/applications/daemon/management/PhabricatorDaemonManagementStatusWorkflow.php --- a/src/applications/daemon/management/PhabricatorDaemonManagementStatusWorkflow.php +++ b/src/applications/daemon/management/PhabricatorDaemonManagementStatusWorkflow.php @@ -22,7 +22,7 @@ 'instance ("%s").', $instance)); } else { - $this->writeInfo( + $this->logInfo( pht('NO DAEMONS'), pht('There are no running daemon processes.')); } diff --git a/src/applications/daemon/management/PhabricatorDaemonManagementWorkflow.php b/src/applications/daemon/management/PhabricatorDaemonManagementWorkflow.php --- a/src/applications/daemon/management/PhabricatorDaemonManagementWorkflow.php +++ b/src/applications/daemon/management/PhabricatorDaemonManagementWorkflow.php @@ -71,6 +71,7 @@ final protected function launchDaemons( array $daemons, $debug, + $foreground = false, $run_as_current_user = false) { // Convert any shorthand classnames like "taskmaster" into proper class @@ -132,11 +133,8 @@ $config = array(); - if (!$debug) { + if (!$foreground) { $config['daemonize'] = true; - } - - if (!$debug) { $config['log'] = $this->getLogDirectory().'/daemons.log'; } @@ -147,7 +145,7 @@ $phabricator_root = dirname(phutil_get_library_root('phabricator')); $daemon_script_dir = $phabricator_root.'/scripts/daemon/'; - if ($debug) { + if ($foreground) { // Don't terminate when the user sends ^C; it will be sent to the // subprocess which will terminate normally. pcntl_signal( @@ -264,8 +262,9 @@ $options, array( 'keep-leases' => 'optional bool', - 'force' => 'optional bool', - 'reserve' => 'optional float', + 'force' => 'optional bool', + 'foreground' => 'optional bool', + 'reserve' => 'optional float', )); $console = PhutilConsole::getConsole(); @@ -330,7 +329,10 @@ ), ); - $this->launchDaemons($daemons, $is_debug = false); + $this->launchDaemons( + $daemons, + $is_debug = false, + idx($options, 'foreground', false)); $console->writeErr("%s\n", pht('Done.')); return 0;