Добрый день. Существует таблица с полем blob, в которое сохраняются объекты в формате JSON. Сохранение и выбор, в принципе, работают. Делают они это так: 1) Добавление PHP: $query = "insert into history (item_type, item_id, item_value, dt_change, person) values ( '" . $history->item_type . "', '" . $history->item_id . "', EMPTY_BLOB(), '" . $history->dt_change . "', '" . $history->person . "') RETURNING item_value INTO ?"; $tmpfile = tmpfile(); fwrite($tmpfile, $history->item_value); fseek($tmpfile, 0); $pdo = Ora::create()->pdo; $q = $pdo->prepare($query); $q->bindParam(1, $tmpfile, PDO::PARAM_LOB); $q->execute(); 2) Выборка PHP: $result = array(); $query = Select::create('history') ->addFields('item_value', 'dt_change', 'person', 'item_type', 'item_id') ->addConditions(array('item_type' => $type, 'item_id' => $id)) ->orderBy('dt_change DESC'); $pdo = Ora::create()->pdo; $q = $pdo->prepare($query.''); $q->execute(); $q->bindColumn(1, $blob, PDO::PARAM_LOB); while ($history = $q->fetch(PDO::FETCH_ASSOC)) { $value = fread($blob, 2000000); $result[] = array( 'dt_change' => $history['dt_change'], 'person' => $history['person'], 'value' => json_decode($value) ); } return $result; Как видно, работает все через PDO. Такие штуки, как beginTransaction и commit встроены в execute. Проблема в том, что допустим после сохранения не работает выборка, т.е. все зависает на выполнении select запроса больше чем на 30 секунд и сервер плюется ответом. Помогает только перезагрузка апача и удаление файлика сессии с компа. Возможно, есть и другие комбинации, например на какой-то определенной выборке без сохранений все зависнет. Надо сказать, что после удаления сессии и перезагрузке апача выборка работает очень шустро, собственно как и первое сохранение. Может кто-то сталкивался или просто поможет решить проблему?