Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Проверка строк .txt на условие
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Дано:
txt файл с данными формата:
120814 раздватричетырепять один раз
130814 вышел зайчик погулять
130814 вышел зайчик погулять2
130814 вышел зайчик погулять3
150814 вдруг охотник выбегает
Нужно:
чтобы скрипт, запускающийся через cron каждый час проверял строки txt файла на условие совпадение текущей даты с датой, указанной в начале строки (120814 - т.е. 12 августа 2014), и при совпадении условия - выводил сообщение, находящееся в строке с соответствующей датой (раздватричетырепять один раз).
Также нужно учесть, что на одну дату может приходится несколько разных сообщений, и скрипт должен пропускать уже опубликованные строки. Т.е. в первый час 13 августа 2014 он опубликовал вышел зайчик погулять, через час - вышел зайчик погулять2 и т.д.
буду очень благодарен, если поможете с решением данной задачи
Panoptik
Отправлено: 05 Августа, 2014 - 16:00:36
Постоянный участник
Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011 Откуда: Одесса, Украина
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Можно сделать два файла. Файл1 - в нем лежит единственная строка, планировщик читает. Строка выводится, запоминается.
Далее открывается второй файл - Файл2, читается построчно, сравнивается со строкой в памяти.
Если строки совпадают, следующая строка из Файла2 записывается в Файл1 - перезапись.
Цитата:
Спасибо за помощь! Но что то не получается: в результате выполнения скрипта ничего не выводится(
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Идея хороша, но мне нужен не алгоритм, а его результат - рабочий php код.
Я в курсе, что не 12августа Подставлял 090914 (вчера), php код ничего не выводит
dcc0 пишет:
Можно сделать два файла. Файл1 - в нем лежит единственная строка, планировщик читает. Строка выводится, запоминается.
Далее открывается второй файл - Файл2, читается построчно, сравнивается со строкой в памяти.
Если строки совпадают, следующая строка из Файла2 записывается в Файл1 - перезапись.
Цитата:
Спасибо за помощь! Но что то не получается: в результате выполнения скрипта ничего не выводится(
Сейчас же не 12 августа.
Tyoma5891
Отправлено: 10 Сентября, 2014 - 17:37:20
Частый посетитель
Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013
Помог: 5 раз(а)
rus181818 пишет:
Идея хороша, но мне нужен не алгоритм, а его результат - рабочий php код.
Вам в платный раздел
rus181818
Отправлено: 10 Сентября, 2014 - 20:01:37
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Tyoma5891 пишет:
rus181818 пишет:
Идея хороша, но мне нужен не алгоритм, а его результат - рабочий php код.
Вам в платный раздел
Вы напишите сюда - я заплачу, если все будет работать так как надо. Другой вопрос - во сколько вы оцениваете стоимость 15 строчек php кода)
dcc0
Отправлено: 10 Сентября, 2014 - 22:12:15
Участник
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Если бы можно было изменить условие, то проблема решается так:
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
Нет, к сожалению, условие изменить нельзя( я конечно могу >3000 строк проверить на совпадение дат и вручную рандомно поставить часики но... если все просто- не интересно)
+ опять же если настроить cron на выполнение раз в минуту хостер это не оценит))
dcc0 пишет:
Если бы можно было изменить условие, то проблема решается так:
Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014
Помог: 10 раз(а)
Не хотите просто, сделаем сложно.
Два файла. Оба на чтение, иной еще и на запись, сравниваем дату, сравниваем значение, полученное после разбиения. Выводим, пишем в файл2, чтобы сравнить при следующем вызове. В какой-то момент файл 2, если надо, можете обнулить (удалить).
Подразумевается, что f2.txt изначально пустой, а f1.txt лежат сообщения:
P.S. У меня скрипт работает корректно. И вроде бы соответствует условию. Если все ок, можете кинуть мне денег на телефон
Все-таки такие вещи лучше решать с bash.
Покинул форум
Сообщений всего: 7
Дата рег-ции: Авг. 2014
Помог: 0 раз(а)
СПАСИБО! Вроде все работает. Можно только капельку доработать скрипт? Чтобы он выводил не "110914 Текст сообщения", а просто "Текст сообщения".
dcc0 пишет:
Не хотите просто, сделаем сложно.
Два файла. Оба на чтение, иной еще и на запись, сравниваем дату, сравниваем значение, полученное после разбиения. Выводим, пишем в файл2, чтобы сравнить при следующем вызове. В какой-то момент файл 2, если надо, можете обнулить (удалить).
Подразумевается, что f2.txt изначально пустой, а f1.txt лежат сообщения:
P.S. У меня скрипт работает корректно. И вроде бы соответствует условию. Если все ок, можете кинуть мне денег на телефон
Все-таки такие вещи лучше решать с bash.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.