Описание утилиты URLChecker |
Мой сайт содержит довольно большой список ссылок на VFP-сайты... И это достаточно утомительное занятие время от времени проверять: все ли они "живые". Хорошей утилиты для этого мне как-то не попалось под руку (возможно, плохо искал :-), ну и вот решил написать сам... Пара моментов, предопределивших то, что эта утилита написана именно так, а не иначе:
Ожидается, что импортируемый текстовый файл имеет следующий формат:
Уникальный номер | URL-адрес | Название |
Число | Строка | Строка |
Поля разделены символом горизонтальной
табуляции (TAB) и в конце правого поля проставлен
символ конец строки.
Внимание! Никакого контроля ошибок
указанного формата в файле при его импорте
утилитой не производится, поэтому будьте,
пожалуйста, внимательны при подготовке данных.
Экспорт данных выполняется в текстовый файл следующего формата:
Уникальный номер | URL-адрес | Название | Результат контроля | Код состояния |
Число | Строка | Строка | Строка | Число |
Первые три столбца соответствуют импортируемому файлу, в то время как последние два отвечают кодам, из раздела MSDN, описывающего функцию CHttpFile::QueryInfoStatusCode(...). Приведу их здесь, на всякий случай:
Результат контроля | Код состояния |
Success | 200-299 |
Information | 300-399 |
Request error | 400-499 |
Server error | 500-599 |
Undefined | 0 |
Код в последней строке таблицы дополнен мной.
Вся настройка уместилась на одну закладку окна свойств:
Замечание: Помимо асинхронного режима, мне пришлось разрешить возможность и синхронного подключения, но я очень не советую Вам им пользоваться . Проблема заключается в том, что небольшое множество Web-серверов обрывает соединение при асинхронном подключении прежде, чем мне удаётся получить от них информацию (из порядка двухсот сайтов у меня таких оказалось всего несколько штук :-) ...Конечно, очень даже может быть, что мне не удалось просто на все 100% корректно написать код обработки асинхронного подключения :-( При синхронном режиме подключения указанных обрывав соединения не происходит, однако в этом случае отсутствует возможность прервать процесс связи с Web-сервером, кроме как завершить задачу из System Task Manager :-( в то время как в асинхронном режиме, такие подключения прерываются по ошибке без какого-либо кода завершения (Undefined) или по истечению времени Time out. По-видимому, необходимо дополнительно проверить такие сайты из IE. ... И это уже не будет первоначальный список сайтов, не так ли :-)
Всё очень просто. Выполнив пункт меню Options/Start, вы можете наблюдать процесс проверки ссылок. Если при этом Вы прервёте процесс - Options/Stop, то возникнет состояние, подобное показанному на следующей картинке:
Обратите внимание, что ссылка, на которой был прерван процесс контроля, находится в состоянии Aborted (третья строка на картинке 2). После этого Вы можете либо продолжить контроль начиная с прерванной ссылки - Options/Continue, ну либо всё сначала...
Текущее состояние данных Вы можете сохранить/читать в файлах на диске с расширением .uck
Скачать исходники [116KB]