Page MenuHomec4science

PhabricatorMySQLFileStorageEngine.php
No OneTemporary

File Metadata

Created
Mon, Nov 25, 12:59

PhabricatorMySQLFileStorageEngine.php

<?php
/**
* MySQL blob storage engine. This engine is the easiest to set up but doesn't
* scale very well.
*
* It uses the @{class:PhabricatorFileStorageBlob} to actually access the
* underlying database table.
*
* @task internal Internals
*/
final class PhabricatorMySQLFileStorageEngine
extends PhabricatorFileStorageEngine {
/* -( Engine Metadata )---------------------------------------------------- */
/**
* For historical reasons, this engine identifies as "blob".
*/
public function getEngineIdentifier() {
return 'blob';
}
public function getEnginePriority() {
return 1;
}
public function canWriteFiles() {
return ($this->getFilesizeLimit() > 0);
}
public function hasFilesizeLimit() {
return true;
}
public function getFilesizeLimit() {
return PhabricatorEnv::getEnvConfig('storage.mysql-engine.max-size');
}
/* -( Managing File Data )------------------------------------------------- */
/**
* Write file data into the big blob store table in MySQL. Returns the row
* ID as the file data handle.
*/
public function writeFile($data, array $params) {
$blob = new PhabricatorFileStorageBlob();
$blob->setData($data);
$blob->save();
return $blob->getID();
}
/**
* Load a stored blob from MySQL.
*/
public function readFile($handle) {
return $this->loadFromMySQLFileStorage($handle)->getData();
}
/**
* Delete a blob from MySQL.
*/
public function deleteFile($handle) {
$this->loadFromMySQLFileStorage($handle)->delete();
}
/* -( Internals )---------------------------------------------------------- */
/**
* Load the Lisk object that stores the file data for a handle.
*
* @param string File data handle.
* @return PhabricatorFileStorageBlob Data DAO.
* @task internal
*/
private function loadFromMySQLFileStorage($handle) {
$blob = id(new PhabricatorFileStorageBlob())->load($handle);
if (!$blob) {
throw new Exception(pht("Unable to load MySQL blob file '%s'!", $handle));
}
return $blob;
}
}

Event Timeline