Я немного новичок в PHP, поэтому мне интересно, не могли бы вы мне что-нибудь объяснить.PHP-файл с несколькими экземплярами одного файла
Я пытаюсь написать класс, который будет прикреплен к файлу журнала. Я написал класс, чтобы сам ресурс был статичным в классе Logger. Это отлично работает для меня, когда я тестирую, поскольку у меня может быть несколько классов, создающих экземпляр объекта Logger, но все будут использовать один и тот же статический ресурс для записи в файл.
Сказанное, теперь я сталкиваюсь с вопросом о нескольких экземплярах PHP (несколько пользователей, загружающих мою страницу), а точнее: параллелизм.
Вопросы:
, когда мой сайт испытывает одновременно экземпляры PHP, которые используют регистратор, они будут бороться за доступ к этому файлу?
Я нахожусь на UBUNTU, но будет ли это иметь значение в Windows?
В моем файле logger я проверяю каждое X количество добавленных строк, чтобы увидеть, какой размер файла, если размер больше Y, я закрываю этот файл и «поворачиваю» файлы (mylog.log2 становится mylog.log3, mylog.log1 становится mylog.log2, mylog.log становится mylog.log1) и создает новый файл mylog.log. Будет ли это беспокоить, если к нему пишут несколько экземпляров? если да, то как это можно правильно обработать?
Извините за NEWB вопрос ...
Янтарь, спасибо за ответ, вы могли бы рассмотреть вопрос № 2 и 3 выше? – NEW2WEB
Конечно. Вы должны обрабатывать вращение журнала с помощью отдельной (и единственной) программы, например. Пакет 'logrotate' Ubuntu - см.' Man logrotate' для деталей. В противном случае вы, вероятно, столкнетесь с условиями гонки между различными экземплярами регистратора. – Amber
Кроме того, мой первоначальный ответ должен выполняться как в Windows, так и в Linux и OS X - пока вы открываете файл в режиме добавления, все может делиться файлом. (Мой комментарий о вращении журнала также имеет истинную кросс-платформенную платформу.) – Amber