Skip to content
Snippets Groups Projects
wp-nginx-map-json.php 1.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • lucha's avatar
    lucha committed
    <?php
    
    // wp-nginx-map.php (JSON version)
    
    // Load wordpress api.
    define('WP_CACHE',false);
    require_once('/opt/noblogs/www/wp-load.php');
    
    // Return all blogs.
    function get_blogs() {
      global $wpdb;
      $sql = "SELECT blog_id, domain FROM $wpdb->blogs WHERE deleted = 0 AND archived = '0' ORDER BY domain ASC";
      $result = $wpdb->get_results($sql);
      return ($result);
    }
    
    function backend_to_shard_id($backend) {
      if (substr($backend, 0, 8) != 'backend_') {
        error_log('diamine, di questo backend non so che farmene: ' . $backend);
        return '0';
      }
      return substr($backend, 8);
    }
    
    // Print the blog -> shard_id map.
    function generate_shard_map($blogs) {
      global $wpdb;
      $wpdb_hash = &$wpdb->hash_map;
    
      $shard_map = array();
      foreach ($blogs as $blog) {
        $blog_id = $blog->blog_id;
        if ($blog_id == 1)
          continue;
        $backend_id = $wpdb_hash->lookup($blog_id);
        $shard_id = backend_to_shard_id($backend_id);
        $shard_map[$blog->domain] = $shard_id;
      }
      echo json_encode($shard_map);
    }
    
    function generate_maps() {
      $all_blogs = get_blogs();
      generate_shard_map($all_blogs);
    }
    
    generate_maps();