|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.05.2013, 20:40 | #1 |
Регистрация: 07.05.2013
Сообщений: 3
|
Логер чата и недопущение дублей в логах.
В рамках изучения PHP пишу свой мини-велосипед для сохранения логов чужого чата, столкнулся с парой проблем:
1) автономность - скрипт сохранения новых сообщений чата нужно выполнять минимум раз в две секунды, а имея обычный хостинг можно запустить скрипт максимум на 30 секунд (если зациклить), на хостинге есть cron, но его можно запускать лишь раз в минуту, а таким образом теряются сообщения отправленные в оставшиеся 30 секунд. Временно решено задействованием своей машины (24/7 теоретически), с которой постоянно идут обращения к скрипту. 2) как результат решения предыдущей проблемы имеются случаи дублирующих записях в логах, предположительно в случаях когда скрипт запускается два раза подряд(почти одновременно). Вот моя неуклюжая попытка обойти дублирование записи. PHP код:
|
08.05.2013, 12:28 | #2 |
Форумчанин
Регистрация: 03.12.2010
Сообщений: 334
|
я тебе предлагаю такой алгоритм, нужно подрубить под свою структуру чата.
PHP код:
PHP код:
|
08.05.2013, 13:35 | #3 |
Регистрация: 07.05.2013
Сообщений: 3
|
Конечно спасибо за подсказку о некоторых функция для нуба, но я тут вижу ту же ситуацию когда скрипт может запуститься два раза подряд с минимальным интервалом (особенно если хостинг медленный) и будет писать в логи по два одинаковых сообщения
т.е. в обоих запусках скрипт возьмет одно и то же последнее сообщение, и на основе его запишет одни и те же новые сообщения в лог два раза. Да, и тут проблема не так уж в активности чата, а в правильном методе разруливании совместного доступа к файлам несколькими (или повторными запусками одного и того же) скриптами. PHP код:
|
09.05.2013, 16:49 | #4 |
Форумчанин
Регистрация: 03.12.2010
Сообщений: 334
|
если ты закомментируешь последнюю строку, то да, он будет не только по два раза дублировать, а до тех пор, пока ты не изменишь last.log, например, другим скриптом. В обоих вариантах последняя строка пишет в last.log последнее состояние чата и даже если ты запустишь выполнение скрипта немедленно после предыдущего выполнения, никакого дубляжа не будет.
во втором скрипте может возникнуть проблема, если более старая часть сохраненного состояния чата успела исчезнуть до следующего выполнения скрипта, тогда будет дубляж - этот вариант канает только для чатов, в которых за время простоя скрипта произойдет всего несколько изменений. в первом скрипте мы извлекаем последнее сохраненное сообщение, игнорируем его и предыдущие, а все последующие записываем в массив, из которого добавляем в лог без всяких дубляжей и обновляем last.log... единственное, что я здесь не совсем грамотно сделал - записываю в last.log кусок чата (который может оказаться довольно большим), а потом уже по надобности извлекаю последнюю строку... лучше выделить последнюю строку из последнего изменения чата и записать в last.log только ее, без лишнего текста. если сообщения в чате висят хотя бы 10 минут, то скрипт можно запускать вообще раз в 5-8 минут для сбора последних обновлений и все будут довольны. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу найти ошибку. В логах не выдает. | IHaveAPussy | Общие вопросы Delphi | 9 | 10.01.2013 23:14 |
Удаление дублей | timon132009 | Помощь студентам | 1 | 01.05.2012 14:07 |
удаление дублей | Bape}l{ka | Microsoft Office Excel | 7 | 01.07.2011 11:50 |
Помогите разобраться в логах | bionicle | Общие вопросы C/C++ | 2 | 28.07.2010 11:01 |
Удаление дублей | 777grabber | PHP | 4 | 11.11.2009 17:21 |