]> _ Git - cubeextranet.git/commitdiff
wait #5725 @0.25
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 13 Feb 2023 09:43:04 +0000 (09:43 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 13 Feb 2023 09:43:04 +0000 (09:43 +0000)
inc/ws/Metier/class.ws.document.php

index c961c6b9f1b858febfa648a800257ca0dbbe3b70..c86dafc8eb0958707610954bf5b4092f7640ed53 100644 (file)
@@ -451,22 +451,38 @@ class wsDocument extends cubeMetier
         if (null === self::$_farmServers) {
             self::$_farmServers = json_decode(file_get_contents('/home/toolbox/www/storage/fluidbookfarm/servers'), true);
         }
+
         return self::$_farmServers;
     }
 
-    public static function pickOneFarmServer()
+    public static function pickOneFarmServer($region = 'UE')
     {
         $hat = [];
         $pings = json_decode(file_get_contents('/home/toolbox/www/storage/fluidbookfarm/pings'));
 
+        $allServers = [];
+        $regionServers = [];
+
         foreach (self::getFarmServers() as $k => $farmServer) {
             if (!isset($pings[$k]) || !$pings[$k]) {
                 continue;
             }
-            for ($i = 0; $i < $farmServer['weight']; $i++) {
+
+            $allServers[$k] = $farmServer['weight'];
+            if ($region == $farmServer['region']) {
+                $regionServers[$k] = $farmServer['weight'];
+            }
+        }
+
+        if (count($regionServers) == 0) {
+            $regionServers = $allServers;
+        }
+        foreach ($regionServers as $k => $weight) {
+            for ($i = 0; $i < $weight; $i++) {
                 $hat[] = $k;
             }
         }
+
         shuffle($hat);
         $i = array_pop($hat);
         return self::$_farmServers[$i];
@@ -493,7 +509,7 @@ class wsDocument extends cubeMetier
     public function _getFileFarm($page, $format = 'jpg', $resolution = 150, $withText = true, $withGraphics = true, $version = 'html', $force = false)
     {
         $start = microtime(true);
-        $farmer = self::pickOneFarmServer();
+        $farmer = self::pickOneFarmServer($this->region);
 
         $params = ['page' => $page, 'format' => $format, 'resolution' => $resolution, 'withText' => $withText, 'withGraphics' => $withGraphics, 'version' => $version, 'force' => $force, 'out' => $this->out, 'resolutionRatio' => $this->getResolutionRatio(), 'mobileRatio' => $this->getMobileFirstRatio()];
         try {