Arguments:489: return array_values($this->slaves);
490: }
491:
492: if ($this->updateSentinels) {
493: $this->updateSentinels();
494: }
495:
496: SENTINEL_QUERY: {
497: $sentinel = $this->getSentinelConnection();
498:
499: try {
500: $slavesParameters = $this->querySentinelForSlaves($sentinel, $this->service);
501:
502: foreach ($slavesParameters as $slaveParameters) {
503: $this->add($this->connectionFactory->create($slaveParameters));
Arguments:514:
515: /**
516: * Returns a random slave.
517: *
518: * @return NodeConnectionInterface|null
519: */
520: protected function pickSlave()
521: {
522: $slaves = $this->getSlaves();
523:
524: return $slaves
525: ? $slaves[rand(1, count($slaves)) - 1]
526: : null;
527: }
528:
Arguments:531: *
532: * @param CommandInterface $command Command instance.
533: *
534: * @return NodeConnectionInterface
535: */
536: private function getConnectionInternal(CommandInterface $command)
537: {
538: if (!$this->current) {
539: if ($this->strategy->isReadOperation($command) && $slave = $this->pickSlave()) {
540: $this->current = $slave;
541: } else {
542: $this->current = $this->getMaster();
543: }
544:
545: return $this->current;
Arguments:578: }
579: }
580:
581: /**
582: * {@inheritdoc}
583: */
584: public function getConnectionByCommand(CommandInterface $command)
585: {
586: $connection = $this->getConnectionInternal($command);
587:
588: if (!$connection->isConnected()) {
589: // When we do not have any available slave in the pool we can expect
590: // read-only operations to hit the master server.
591: $expectedRole = $this->strategy->isReadOperation($command) && $this->slaves ? 'slave' : 'master';
592: $this->assertConnectionRole($connection, $expectedRole);
object Predis\Command\Redis\GET(1) {
private arguments => array(1) (
0 => string(37) "SESS:ecdb1a922642243f72889b94b8c1b131"
)
}Arguments:710: * @return mixed
711: */
712: private function retryCommandOnFailure(CommandInterface $command, $method)
713: {
714: $retries = 0;
715:
716: while ($retries <= $this->retryLimit) {
717: try {
718: $response = $this->getConnectionByCommand($command)->$method($command);
719: break;
720: } catch (CommunicationException $exception) {
721: $this->wipeServerList();
722: $exception->getConnection()->disconnect();
723:
724: if ($retries === $this->retryLimit) {
Object Predis\Command\Redis\GET, already rendered
Arguments:750: return $this->retryCommandOnFailure($command, __FUNCTION__);
751: }
752:
753: /**
754: * {@inheritdoc}
755: */
756: public function executeCommand(CommandInterface $command)
757: {
758: return $this->retryCommandOnFailure($command, __FUNCTION__);
759: }
760:
761: /**
762: * Returns the underlying replication strategy.
763: *
764: * @return ReplicationStrategy
Object Predis\Command\Redis\GET, already rendered
string(14) "executeCommand"Arguments:373: throw new RuntimeException('Not allowed');
374: }
375:
376: /**
377: * {@inheritdoc}
378: */
379: public function executeCommand(CommandInterface $command)
380: {
381: $response = $this->connection->executeCommand($command);
382:
383: if ($response instanceof ResponseInterface) {
384: if ($response instanceof ErrorResponseInterface) {
385: $response = $this->onErrorResponse($command, $response);
386: }
387:
Object Predis\Command\Redis\GET, already rendered
Arguments:327: return $response;
328: }
329:
330: /**
331: * {@inheritdoc}
332: */
333: public function __call($commandID, $arguments)
334: {
335: return $this->executeCommand(
336: $this->createCommand($commandID, $arguments)
337: );
338: }
339:
340: /**
341: * {@inheritdoc}
Object Predis\Command\Redis\GET, already rendered
Arguments:46: * @param string $selector defines the key or the set of values
47: * @param mixed|null $value possible values
48: *
49: * @return mixed
50: */
51: public function read($selector, $value = NULL)
52: {
53: $this->getConnection();
54: return unserialize((string)$this->connection->get($selector));
55: }
56:
57: /**
58: * update data
59: *
60: * @param string $selector defines the key or the set of values
string(3) "get"array(1) ( 0 => string(37) "SESS:ecdb1a922642243f72889b94b8c1b131" )
Arguments:76:
77: /**
78: * @param string $id session id
79: *
80: * @return false|string
81: */
82: public function read(string $id): false|string
83: {
84: if ($data = $this->adapter->read(self::PREFIX . $id))
85: {
86: return $data;
87: }
88: return '';
89: }
90:
string(37) "SESS:ecdb1a922642243f72889b94b8c1b131"Arguments:62:
63: if ($name === NULL)
64: {
65: $name = $this->defaultName;
66: }
67:
68: $this->isStarted = TRUE;
69: session_name($name);
70: session_start();
71: }
72:
73: /**
74: * getId
75: *
76: * @return false|string
Arguments:28: * UserNotice constructor.
29: *
30: * @param Session $session Session
31: */
32: public function __construct(Session $session)
33: {
34: if (!$session->isStarted())
35: {
36: $session->start();
37: }
38: $this->session = $session;
39: }
40:
41: /**
42: * Add a Message to be Displayed.
Arguments:153:
154: // Create parameter generating function in order to cache reflection on the parameters. This way $reflect->getParameters() only ever gets called once
155: $params = $constructor ? $this->getParams($constructor, $rule) : NULL;
156: // Get a closure based on the type of object being created: Shared, normal or constructorless
157: if ($params)
158: {
159: $closure = function (array $args, array $share) use ($class, $params) {
160: // This class has depenencies, call the $params closure to generate them based on $args and $share
161: return new $class->name(...$params($args, $share));
162: };
163: }
164: else
165: {
166: $closure = function () use ($class) { // No constructor arguments, just instantiate the class
167: return new $class->name;
object WASABI\Core\System\Session(3) {
protected isStarted => bool TRUE
protected defaultName => string(13) "rsWebFrontend"
protected objects => array(0)
}Arguments:98: throw new FactoryException('Class does not exist for creation: ' . $className);
99: }
100: // Create a closure for creating the object if there isn't one already
101: if (empty($this->cache[$className]))
102: {
103: $this->cache[$className] = $this->getClosure($className, $this->getRule(strtolower($className)));
104: }
105: // Call the cached closure which will return a fully constructed object of type $name
106: $object = $this->cache[$className]($args, $share);
107: return $this->injectAdditional($object);
108: }
109:
110: /**
111: * Returns the rule that will be applied to the class $name when calling create()
112: *
array(0) array(0) Arguments:316: try
317: {
318: if ($sub)
319: {
320: $parameters[] = $this->expand($rule['substitutions'][$class], $share, TRUE);
321: }
322: else
323: {
324: $parameters[] = !$param->allowsNull() ? $this->getInstanceFor($class, [], $share) : NULL;
325: }
326: }
327: catch (InvalidArgumentException)
328: {
329: }
330: }
string(56) "WASABI\WebFrontend\Functionality\UserSettings\UserNotice"array(0) array(0) Arguments:153:
154: // Create parameter generating function in order to cache reflection on the parameters. This way $reflect->getParameters() only ever gets called once
155: $params = $constructor ? $this->getParams($constructor, $rule) : NULL;
156: // Get a closure based on the type of object being created: Shared, normal or constructorless
157: if ($params)
158: {
159: $closure = function (array $args, array $share) use ($class, $params) {
160: // This class has depenencies, call the $params closure to generate them based on $args and $share
161: return new $class->name(...$params($args, $share));
162: };
163: }
164: else
165: {
166: $closure = function () use ($class) { // No constructor arguments, just instantiate the class
167: return new $class->name;
array(0) array(0) Arguments:98: throw new FactoryException('Class does not exist for creation: ' . $className);
99: }
100: // Create a closure for creating the object if there isn't one already
101: if (empty($this->cache[$className]))
102: {
103: $this->cache[$className] = $this->getClosure($className, $this->getRule(strtolower($className)));
104: }
105: // Call the cached closure which will return a fully constructed object of type $name
106: $object = $this->cache[$className]($args, $share);
107: return $this->injectAdditional($object);
108: }
109:
110: /**
111: * Returns the rule that will be applied to the class $name when calling create()
112: *
array(0) array(0) Arguments:54: $siteInitController = $this->factory->getInstanceFor(SiteInitController::class);
55: $siteInitController->initSite($this->environment, $this->request);
56: $siteMetaInformation = $siteInitController->getSiteMetaInformation();
57: /** @var GeoLocationCookieController $cookieController */
58: $cookieController = $this->factory->getInstanceFor(GeoLocationCookieController::class);
59: $cookieController->handleGeoLocationCookie($this->request, $siteMetaInformation);
60:
61: /** @var GeoLocationMessageController $messageController */
62: $messageController = $this->factory->getInstanceFor(GeoLocationMessageController::class);
63: $messageController->createUserNotes($siteMetaInformation);
64:
65: /** @var FolderVersion $folderVersion */
66: $folderVersion = $this->factory->getInstanceFor(FolderVersion::class);
67: $this->environment->setGlobalVersion($folderVersion->getGlobalLanguageVersion());
68:
string(73) "WASABI\WebFrontend\Functionality\GeoLocation\GeoLocationMessageController"Arguments:106: {
107: $this->uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
108: $this->factory = $this->initializeFactory();
109: $this->config = $this->setupConfiguration();
110: $this->setRequest();
111: $this->logger = $this->factory->getInstanceFor(Logger::class, [$this->site, $this->request]);
112: $this->factory->setLogger($this->logger);
113: $this->setupErrorManager();
114: $this->buildEnvironment();
115: if ($this->config->getConfigValueWithDefaultValue('global', 'pageType', 'site') != 'site')
116: {
117: $this->config->addConfig(WASABI_BASEPATH . '/config/' . $this->environment->getSite() . '/' . $this->environment->getSubSite() . '/config.xml');
118: }
119: $this->localization();
120: $this->executeInitManager();
Arguments:29: * prepare webFrontend execution and run request
30: *
31: * @param Request|null $request object
32: *
33: * @return void
34: */
35: public function run(?Request $request = NULL): void
36: {
37: $this->init();
38: /** @var WebFrontDispatcher $frontDispatcher */
39: $frontDispatcher = $this->factory->getInstanceFor(WebFrontDispatcher::class);
40: $frontDispatcher->setLogger($this->logger);
41: $frontDispatcher->init();
42: /** @var WebFrontend $frontend */
43: $frontend = $this->factory->getInstanceFor(WebFrontend::class);
Arguments:14: $localConfig = getenv('RS_CONFIG');
15: $debug = getenv('RS_DEBUG_MODE');
16:
17: const WASABI_BASEPATH = '/opt/wasabi';
18:
19: require WASABI_BASEPATH . '/vendor/autoload.php';
20:
21: $bootstrap = new DomainBootstrap($site, $localConfig, $debug);
22: $bootstrap->run();
23: