/**
  * Determine the maximum size for cache data to be written
  */
 private function max_packet_size()
 {
     if ($this->max_packet < 0) {
         $this->max_packet = 2097152;
         // default/max is 2 MB
         if ($this->type == 'db') {
             if ($value = $this->db->get_variable('max_allowed_packet', $this->max_packet)) {
                 $this->max_packet = $value;
             }
             $this->max_packet -= 2000;
         } else {
             if ($this->type == 'memcache') {
                 $stats = $this->db->getStats();
                 $remaining = $stats['limit_maxbytes'] - $stats['bytes'];
                 $this->max_packet = min($remaining / 5, $this->max_packet);
             } else {
                 if ($this->type == 'apc' && function_exists('apc_sma_info')) {
                     $stats = apc_sma_info();
                     $this->max_packet = min($stats['avail_mem'] / 5, $this->max_packet);
                 }
             }
         }
     }
     return $this->max_packet;
 }
Exemplo n.º 2
0
 /**
  * Determine the maximum size for cache data to be written
  */
 private function max_packet_size()
 {
     if ($this->max_packet < 0) {
         $this->max_packet = 2097152;
         // default/max is 2 MB
         if ($this->type == 'db') {
             if ($value = $this->db->get_variable('max_allowed_packet', $this->max_packet)) {
                 $this->max_packet = $value;
             }
             $this->max_packet -= 2000;
         } else {
             $max_packet = rcube::get_instance()->config->get($this->type . '_max_allowed_packet');
             $this->max_packet = parse_bytes($max_packet) ?: $this->max_packet;
         }
     }
     return $this->max_packet;
 }