Сохранение файла в БД (оптимизация)
Если это имеет значение, БД: firebird.
Вспомагательная функция:
define('MAX_SEGMENT_SIZE', 65535);
function blob_create($data) {
if (strlen($data) == 0)
return false;
$handle = ibase_blob_create();
$len = strlen($data);
for ($pos = 0; $pos < $len; $pos += MAX_SEGMENT_SIZE) {
$buflen = ($pos + MAX_SEGMENT_SIZE > $len) ? ($len - $pos) : MAX_SEGMENT_SIZE;
$buf = substr($data, $pos, $buflen);
ibase_blob_add($handle, $buf);
}
return ibase_blob_close($handle);
}
В данный момент сохранение работает так:
else if (isset($_POST['id']) && $_POST['id'] == 'callback'){
$database = "***********";
$user = "SYSDBA";
$ps = "1";
$dbh = ibase_connect($database, $user, $ps, 'utf8') or die(json_encode(array('message' => 'not connection', 'successed' => false)));
for ($i = 0 ; $i < count($_FILES['img']['name']); $i++){
$stmt = "insert into file (name, content, file_type,resource_name, identifier) values ('" . $_FILES['img']['name'][$i] . "','" . blob_create(file_get_contents($_FILES['img']['tmp_name'][$i])) . "', '" . $_FILES['img']['type'][$i] . "','callback','1')";
$query = ibase_prepare($stmt);
$rs = ibase_execute($query) or die(json_encode(array('message' => 'request error', 'successed' => false)));
ibase_free_query($query);
ibase_free_result($rs);
}
echo "success";exit;
}
На локалке все хорошо. Но вот на хостинге есть границы по запросу, и я в них не влаживаюсь. Подскажите как можно оптимизировать, так как в php so so :).