]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Adds new feature to dispatch avatar url between different servers.
authorJean Baptiste Favre <statusnet@jbfavre.org>
Sat, 3 Sep 2011 19:11:31 +0000 (21:11 +0200)
committerJean Baptiste Favre <statusnet@jbfavre.org>
Sat, 3 Sep 2011 19:11:31 +0000 (21:11 +0200)
That allows parallel download from most browsers.
To avoid caching issue, server choice is "profile_id" based so that
avatar from a specific user will always be served from same server.

Introduce new configuration parameter:
$config['avatar']['server_modulo'] = 5;

Very easy to implement using, for example, DNS wildcard.
For example, if you have following configuration:
$config['avatar']['server']        = 'static_rrdns_.domain.tld';
$config['avatar']['server_modulo'] = 5;

Then, when building avatar's URL, domain will become, depending on profile_id:
static0.domain.tld
static1.domain.tld
static2.domain.tld
static3.domain.tld
static4.domain.tld

classes/Avatar.php

index 6edc81768551e00780ae2cb3b2803bb94ab0bd82..636eb77f9cf87ba7a4f82db7c55f0652f0bfd731 100644 (file)
@@ -103,7 +103,11 @@ class Avatar extends Memcached_DataObject
     {
         $server = common_config('avatar', 'server');
         if ($server) {
-            return Avatar::url($this->filename);
+           if (common_config('avatar', 'server_modulo') && common_config('avatar', 'server_modulo') > 1 ){
+                return str_replace( '_rrdns_', ( $this->profile_id % common_config('avatar', 'server_modulo') ), Avatar::url($this->filename) );
+            }else{
+                return Avatar::url($this->filename);
+           }
         } else {
             return $this->url;
         }