public function save() { $type = $this->getDataType(); $format = $this->getDataFormat(); // Before saving the data, attempt to compress it. if ($type == self::DATATYPE_TEXT) { if ($format == self::DATAFORMAT_RAW) { $data = $this->getData(); $deflated = PhabricatorCaches::maybeDeflateData($data); if ($deflated !== null) { $this->data = $deflated; $this->dataFormat = self::DATAFORMAT_DEFLATED; } } } return parent::save(); }
private function willWriteValue($key, $value) { if (!is_string($value)) { throw new Exception(pht('Only strings may be written to the DB cache!')); } static $can_deflate; if ($can_deflate === null) { $can_deflate = function_exists('gzdeflate') && PhabricatorEnv::getEnvConfig('cache.enable-deflate'); } if ($can_deflate) { $deflated = PhabricatorCaches::maybeDeflateData($value); if ($deflated !== null) { return array(self::CACHE_FORMAT_DEFLATE, $deflated); } } return array(self::CACHE_FORMAT_RAW, $value); }