X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=scripts%2Fxmppdaemon.php;h=abd7cc22b46bdad867b7317f7bfa2e7b24d49c04;hb=001512df966c8c3b8f045f645e804b0a6fef8625;hp=fd7cf055b485cedaae3f327952c16baf4f634456;hpb=c7507e7e9dafa6d6e054978e720e4fce3abc9929;p=quix0rs-gnu-social.git diff --git a/scripts/xmppdaemon.php b/scripts/xmppdaemon.php index fd7cf055b4..abd7cc22b4 100755 --- a/scripts/xmppdaemon.php +++ b/scripts/xmppdaemon.php @@ -20,13 +20,15 @@ define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); -$shortoptions = 'fi::'; -$longoptions = array('id::', 'foreground'); +$shortoptions = 'fi::a'; +$longoptions = array('id::', 'foreground', 'all'); $helptext = <<allsites = $allsites; } function runThread() { common_log(LOG_INFO, 'Waiting to listen to XMPP and queues'); - $master = new XmppMaster($this->get_id()); - $master->init(); + $master = new XmppMaster($this->get_id(), $this->processManager()); + $master->init($this->allsites); $master->service(); common_log(LOG_INFO, 'terminating normally'); - return true; + return $master->respawn ? self::EXIT_RESTART : self::EXIT_SHUTDOWN; } } class XmppMaster extends IoMaster { + protected $processManager; + + function __construct($id, $processManager) + { + parent::__construct($id); + $this->processManager = $processManager; + } + /** * Initialize IoManagers for the currently configured site * which are appropriate to this instance. */ function initManagers() { - // @fixme right now there's a hack in QueueManager to determine - // which queues to subscribe to based on the master class. - $this->instantiate('QueueManager'); - $this->instantiate('XmppManager'); + if (common_config('xmpp', 'enabled')) { + $qm = QueueManager::get(); + $qm->setActiveGroup('xmpp'); + $this->instantiate($qm); + $this->instantiate(XmppManager::get()); + $this->instantiate($this->processManager); + } } } // Abort immediately if xmpp is not enabled, otherwise the daemon chews up // lots of CPU trying to connect to unconfigured servers +// @fixme do this check after we've run through the site list so we +// don't have to find an XMPP site to start up when using --all mode. if (common_config('xmpp','enabled')==false) { print "Aborting daemon - xmpp is disabled\n"; - exit(); + exit(1); +} + +if (version_compare(PHP_VERSION, '5.2.6', '<')) { + $arch = php_uname('m'); + if ($arch == 'x86_64' || $arch == 'amd64') { + print "Aborting daemon - 64-bit PHP prior to 5.2.6 has known bugs in stream_select; you are running " . PHP_VERSION . " on $arch.\n"; + exit(1); + } } if (have_option('i', 'id')) { @@ -92,7 +118,8 @@ if (have_option('i', 'id')) { } $foreground = have_option('f', 'foreground'); +$all = have_option('a') || have_option('--all'); -$daemon = new XMPPDaemon($id, !$foreground); +$daemon = new XMPPDaemon($id, !$foreground, 1, $all); $daemon->runOnce();