23 июля 2010 г. 14:58 пользователь Peter Pentchev <r...@ringlet.net> написал:

> Думаю, вопрос Дениса бил "как точно парсятся".  Если делается fscanf()
> (или sscanf() или вообще *scanf()) или strtod()/strtol(), проверяется
> ли заранее, строка пуста ли?  Если такой проверки нет и по какой-то
> причине wget выдаст празный файл, то *scanf() и strto*() выпарсят
> с него один нуль.
>
> Проверьте каким-то образом, wget не выдает ли 0-length files - или
> допишите програму чтоб проверяла, не пустая ли строка прежде чем парсить.
>
> Всего лучшего,
> Петр


Спасибо за ответ Петр.

Наверное это моя проблема, не смог внятно объяснить. Да и сам по ходу
разбирательства нюансы узнаю.

Парсер не встроен в программу. Парсер обрабатывает файлы, которые
программа из интернета доставляет через прокси и складывает.

Например ожидаемые данные:
1 2 3
5 4 6
5 4 8

А вот как было:
1 2 3
0 0 0
5 4 6
0 0 0
5 4 8
0 0 0

Каждая строка - новый файл.
И каждый запрос программой - новый набор цифр.
Каждый запрос - исполнение у агента на веб сервере рнр скрипта, а
значит данные постоянно отдаются новые, пусть в явном выражении они и
не изменились, например.
В заголовках ответа у агента нет experation date.

Непонятно откуда? Откуда могли все же взяться они - нули? То что это
три нуля внутри файла, правильно разделенные управляющими байтам
(перенос строки), вводит в заблуждение и указывает что не с потолка
взялись. Это правильные данные, но они появляются по команде. Но
команды такой не было иначе во втором примере даже вперемешку с нулями
данные _не_продолжали_ расти, а опять начинались бы с первого десятка.
(то есть ресет имел бы место, но его не было)

Есть три составляющие: программа (исходников нет), сквид
(промежуточное звено, веб сервер + рнр скрип у агента

Откуда могли все же взяться они - нули?

С уважением,
Дмитрий

ПЫ начинаю думать о проблемах на сервере "агента".

Ответить