Большинство примеров, которые я видел, чтобы обновить текстовые файлы журналов, кажется, предлагают проверить, существует ли файл, если это так, загрузите его в большую строку с помощью file_get_contents (), добавьте в него новые журналы, а затем запишите его обратно с помощью file_put_contents ().
Возможно, я слишком обдумываю это, но я думаю, что вижу там две проблемы. Во-первых, если файл журнала становится большим, не слишком ли бесполезно расходуется память сценариев для помещения огромного содержимого файла в переменную? Во-вторых, кажется, что если вы выполняли какую-либо обработку между «get» и «put», вы рискуете возможностью того, что несколько посетителей сайта могут обновиться между двумя вызовами, что приведет к потере информации журнала.
Так что для скрипта, который просто вызывается (GET или POST) и завершается после выполнения некоторой работы, не лучше ли будет просто создать свою текущую (более короткую) строку журнала для записи, а затем непосредственно перед выходом (), просто открыть в режиме APPEND и ЗАПИСАТЬ?
Может показаться, что любой из этих подходов может привести к потере данных, если между файлом get и put не было LOCK. В случае file_get / put_contents я вижу, что у метода есть флаг, называемый «LOCK_EX», который я предполагаю, чтобы попытаться предотвратить это возникновение. Но возникает проблема времени, которое требуется для перемещения большого файла в массив и добавления к нему перед обратной записью. Не лучше ли использовать fopen (append) с каким-то «замком» между fopen () и fwrite ()?
Я прошу прощения за то, что DO понимаю, что вопросы "лучший способ сделать что-то" не оценены сообществом. Но, безусловно, является предпочтительным способом решения проблем, которые я поднимаю?
Спасибо за любую помощь.