Доброго времени суток. Подскажите, как сделать auto increment через файл? Чисто ставить блок, доставать id, увеличивать его, записывать новое значение, снимать блокировку? Нормальный ли такой способ? Или может по нормальнее есть, а то вряд ли то что первое всплыло мне в голову будет работать нормально. :)
P.S. Или лучше не париться, и просто делать уникальный id шник (микротайм там к примеру или еще что-то). Заранее спасибо за помощь!
Подключать целый сервер БД для такой элементарной вещи? И не нужны ссылки на файлы. А так, да, самый последний вариант который я обдумывал - это БД. Тот самый sqlite можно подключить уже (в моем случае).
Чисто ставить блок, доставать id, увеличивать его, записывать новое значение, снимать блокировку? Нормальный ли такой способ?
Не нормально. Угадайте, что будет делать соседний PHP-процесс, ищущий способ получить доступ к файлу?
Да, получит исключение или будет постоянно крутиться в цикле (если там будет обработка исключения с повторной попыткой получить доступ), пока доступ к файлу не будет свободный.
Блокировки в БД в этом случае позволяют более мягко по ресурсам держать конкурирующие потоки.
Можно генерить GUID или UUID – вероятность совпадения крайне низка, игнорировать. Например, реализация ramsey/uuid
Можно использовать общедоступный для всех процессов PHP кусок памяти - зависит от конфига сервера. Это может быть APC. То же, что и файл, но работает быстрее, т.к. в памяти. apc_store(), apc_fetch() и apc_inc() – увеличить сохранённое число.