Server.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\PageCache\Model\Cache;
  7. use Magento\Framework\UrlInterface;
  8. use Magento\Framework\App\DeploymentConfig;
  9. use Magento\Framework\Config\ConfigOptionsListConstants;
  10. use Magento\Framework\App\RequestInterface;
  11. use Zend\Uri\Uri;
  12. use Zend\Uri\UriFactory;
  13. class Server
  14. {
  15. /**
  16. * @var UrlInterface
  17. */
  18. protected $urlBuilder;
  19. /**
  20. * @var DeploymentConfig
  21. */
  22. private $config;
  23. /**
  24. * @var RequestInterface
  25. */
  26. private $request;
  27. const DEFAULT_PORT = 80;
  28. /**
  29. * Constructor
  30. *
  31. * @param UrlInterface $urlBuilder
  32. * @param DeploymentConfig $config
  33. * @param RequestInterface $request
  34. */
  35. public function __construct(
  36. UrlInterface $urlBuilder,
  37. DeploymentConfig $config,
  38. RequestInterface $request
  39. ) {
  40. $this->urlBuilder = $urlBuilder;
  41. $this->config = $config;
  42. $this->request = $request;
  43. }
  44. /**
  45. * Get cache servers' Uris
  46. *
  47. * @return Uri[]
  48. */
  49. public function getUris()
  50. {
  51. $servers = [];
  52. $configuredHosts = $this->config->get(ConfigOptionsListConstants::CONFIG_PATH_CACHE_HOSTS);
  53. if (is_array($configuredHosts)) {
  54. foreach ($configuredHosts as $host) {
  55. $servers[] = UriFactory::factory('')
  56. ->setHost($host['host'])
  57. ->setPort(isset($host['port']) ? $host['port'] : self::DEFAULT_PORT)
  58. ;
  59. }
  60. } elseif ($this->request->getHttpHost()) {
  61. $servers[] = UriFactory::factory('')->setHost($this->request->getHttpHost())->setPort(self::DEFAULT_PORT);
  62. } else {
  63. $servers[] = UriFactory::factory($this->urlBuilder->getUrl('*', ['_nosid' => true]));
  64. }
  65. foreach (array_keys($servers) as $key) {
  66. $servers[$key]->setScheme('http')
  67. ->setPath('/')
  68. ->setQuery(null);
  69. }
  70. return $servers;
  71. }
  72. }