Сохранение файла в БД (оптимизация)

Если это имеет значение, БД: 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 :).


Ответы (0 шт):