На сервере имеется простой текстовый файл, хранящий в себе небольшой JSON.
Данный JSON постоянно перезаписывается и модифицируется различными php-скриптами: с целью добавления новых записей или модификации старых записей. Иногда у меня бывает так, что все данные из него просто исчезают.
Я так понимаю, такие косяки происходят из-за частых перекрестных запросов, которые могут пересекаться и создавать ошибки, при одновременном обращении к файлу. Для чтения использую file_get_contents(), а для записи file_put_contents(), т. е. никаких блокировок и проверок на время работы с файлом я не делаю (в чем моя ошибка).
Собственно, суть моего вопроса в следующем. Как проще всего мне будет организовать безопасную работу с текстовой базой данных? Возможно существуют готовые функции/плагины/библиотеки, где уже учтены все подводные камни?
Не хотелось бы изобретать велосипед, особенно, когда умные люди наверняка придумали все до меня.
Я, наверное, скажу очевидную вещь, но стоит избавиться от текстового файла и взять уже готовую базу данные вроде MongoDB. В противном случае для обеспечения ACID придется навесить такую же по объемности систему, н несколько лет на разработку у вас вряд-ли имеется. Еще лучше если у вас есть четкая структура данных и вы можете воспользоваться MySQL или PostgreSQL - они создавались под ACID, но эт реляционные базы данных
Я рассматриваю мускул, но предварительно хочу прозондировать почву насчет текстовых БД. Нельзя все знать, но есть надежда, что кто-нибудь их хабаровчан наведет на какое-нибудь интересное и легкое решение.
Надим Закиров, а его нет. Иначе бы всех этих баз не существовало. Конкурентные запросы это всегда боль, даже в современных базах иногда приходится ставить очереди чтобы дополнительно организовывать порядок записи. Кроме того, файловые операции очень медленные
Иван Шумов, это вы думайте что нет, но как правило, люди весьма любят изобретать разную не нужную фигню. Уверен, для текстовых баз тоже найдется драйвер, просто лежит где-нибудь в недрах гитхаба, никому не нужный и особо не известный. Сколько раз уж наблюдал подобное.
Надим Закиров, И работает он через всем известное место. Я провел в веб-разработке ... Ну даже хз, к 13 годам трудового стажа добавьте еще порядка 5 лет чисто для себя. Все это время в основном бэкэнд и ни нашлось ни одного достойного велосипеда)