bolk (bolk) wrote,
bolk
bolk

Category:
Даже не думайте связываться с QDBM на PHP. При одновременной записи в базу с блокировкой 'd' (т.е. блокируется файл базы) файл портится на посещаемом проекте за время от нескольких часов, до нескольких минут, с блокировкой 'l' и того хуже — lock может и не очиститься при выходе и процессы PHP начинают подвисать, ожидая снятия блокировки. При этом на одном сервере при попытке открыть битый файл падает PHP, на другом — PHP выдаёт ошибку драйвера qdbm.

Кстати, лимит базы QDBM почему-то 2GB, а не 4 (размер поля, где хранится размер базы — int, платформа у нас — 32 bit), понятно, что база не может быть отрицательного размера, так что ничего не мешает использовать uint, править руками не буду, если бы она работала стабильно, был бы смысл.

Конечно, можно было бы использовать QDBM в некоторых задачах как константную базу данных, но в этом смысле, если верить benchmarks, лучше взглянуть на CDB (от автора qmail!). Кстати, CDB в PHP удалось собрать только как bundled, сборка с библиотеками D. J. Bernstein или Михаила Токарева (TinyCDB) пораждает массу ошибок.

Что остаётся? Остальные файловые БД безнадёжно далеки от лидеров CDB и QDBM. Попробовать SQLite?

P.S. Засада — SQLite3 не хочет заносить символ с кодом ноль в BLOB-поле. Они издеваются? В модуле SQLite к PHP есть функция sqlite_udf_encode_binary для таких случаев — она кодирует специальным образом (вот изврат-то), преобразуя данные в безопасный для SQLite формат. Но модуль SQLite работает только с SQLite2. С SQLite3 в PHP принято работать через PDO, который имеет методы quote/bindValue и методы работы с LOB, которые плюют на кривожопие SQLite и оставляют NUL как есть.
Subscribe

  • Тарелки на берегу

    В прошедшие выходные мы с приятелем собрались в импровизированный поход на один из островов на Волге — порыбачить и отдохнуть. К сожалению…

  • «Ночной пылесос»

    Дочка, как наверное вообще все дети, не очень-то любит убираться в своей комнате. И чтобы заставить её перед сном навести хотя бы косметический…

  • Ортопедические стельки

    В своих поисках того как можно облегчить состояние травмированной когда-то на спортивной гимнастике спине, забрёл к ортопеду. Я подозревал, что…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 40 comments

  • Тарелки на берегу

    В прошедшие выходные мы с приятелем собрались в импровизированный поход на один из островов на Волге — порыбачить и отдохнуть. К сожалению…

  • «Ночной пылесос»

    Дочка, как наверное вообще все дети, не очень-то любит убираться в своей комнате. И чтобы заставить её перед сном навести хотя бы косметический…

  • Ортопедические стельки

    В своих поисках того как можно облегчить состояние травмированной когда-то на спортивной гимнастике спине, забрёл к ортопеду. Я подозревал, что…