Для большинства производственных сайтов вы хотите знать, когда произошла ошибка, как можно скорее. Мой вопрос, как лучше всего получить эту информацию.
Как правило, лучше всего получать сообщения об ошибках по электронной почте, поскольку я не собираюсь сидеть каждый день и просматривать журналы ошибок до тех пор, пока не возникнет ошибка - это было бы невозможно, поскольку у меня 20 или более рабочих сайтов на разных сервера. Эти ошибки могут быть любыми, включая неустановленные переменные, полученные неверные данные или ошибки запроса.
На данный момент я следовал примеру на веб-сайтах PHPs, найденных здесь . В результате он создает текстовую строку вместе с файлом XML, который затем отправляется по электронной почте. Я немного изменил это, чтобы сохранить все ошибки, пока сценарий не закончится, а затем отправить электронное письмо с прикрепленными файлами XML. (Я разбил пару почтовых серверов, отправляющих более 500 000 писем из-за ошибки в цикле.) В большинстве случаев это работает идеально. (Я также создал объект для выполнения всей обработки ошибок.)
Проблема возникает, когда для обработки wddx_serialize_value()
имеется большой объем данных. И затем, если есть несколько ошибок, это действительно приводит к использованию большого количества памяти, в большинстве случаев больше, чем разрешено использовать сценарию.
Из-за этого я добавил gzcompress()
в файл XML перед сохранением его в переменной. Это помогает, но если объем данных очень велик, ему все равно не хватает памяти. (В недавнем случае он хотел использовать около 2 ГБ.)
Мне интересно, какие еще существуют решения для этого или как вы изменили это, чтобы оно заработало?
Итак, несколько требований:
- он должен иметь возможность отправлять мне больше, чем просто сообщение об ошибке, и не должен заставлять меня входить в систему на сервере, чтобы выяснить, что произошло (поэтому я могу проверить мобильность и определить, срочно ли это)
- должно быть ограничение на количество отправленных писем. Лучше всего 1.
- необходимо войти в файл, как обычно
Редактировать: Мне нужна другая информация, связанная с ошибкой, а не только строка ошибки. Часто я нахожу, что почти невозможно воспроизвести ошибку, потому что она вызвана пользовательским вводом, который я не знаю, пока не получу больше информации. Я старался изо всех сил вводить информативные ошибки, но вы никогда не знаете, как пользователь будет использовать систему или какие дерьмовые данные они будут вводить. Поэтому мне нужно больше, чем просто текст ошибки / строка.
Редактировать 2: Невозможно зарегистрировать ошибки в базе данных, поскольку, насколько я знаю, базы данных там может не быть. Нужно что-то, что в значительной степени гарантировано для запуска. Кроме того, сайты не все на 1 сервере, и у меня часто нет доступа к cron на сервере (глупые хостинговые компании).