[Урок] Проверка доступности сайта
|
|
tumkin |
Дата: Пятница, 28.08.2015, 18:38 | Сообщение # 1
|
Tumkin Project
Сообщений: 1186
Статус: Offline
|
Всем привет, сегодня мне было нечего делать и я решил написать свой 1 урок в разделе AHK Программирование.
Данный урок будет о том, как проверить доступность сайта.
Для чего это может пригодиться? Ну например в Вашем скрипте есть система автоматического обновления и если сайт не доступен, скрипт зависнет на длительное время. А благодаря этой функции Вы сможете предупредить пользователя что сайт, который используется для проверки наличия обновлений, не работает.
И так, сама функция проверки обновления очень маленькая и проста. Каждую строчку я опишу подробно. Код StatusSite(url) ; Создание функции { ComObjError(False) ; Отключаем ошибки WinHttpRequest StatusSite := ComObjCreate("WinHttp.WinHttpRequest.5.1") ; Создаем WinHttpRequest StatusSite.SetTimeouts(6000,6000,6000,6000) ; Устанавливаем таймаут при подключении к сайту.
StatusSite.Open("GET",url) ; Создание GET запроса на указанный URL StatusSite.Send() ; Отправка запроса if (StatusSite.ResponseText = "") ; Проверка пустая ли переменная с ответом return false ; Возвращаем отрицательный ответ else return true ; Возвращаем положительный ответ }
Как использовать данную функцию? Использовать данную функцию очень просто. Пример кода вы можете увидеть ниже. Код if (StatusSite("http://vk.com/")) msgbox % "Сайт доступен" else msgbox % "Сайт не доступен" exitapp
StatusSite(url) { ComObjError(False) StatusSite := ComObjCreate("WinHttp.WinHttpRequest.5.1") StatusSite.SetTimeouts(6000,6000,6000,6000) ;Set timeouts to 6 seconds
StatusSite.Open("GET",url) StatusSite.Send() if (StatusSite.ResponseText = "") return false else return true }
P.S. Проверка идет в течении 6 секунд, то есть если сайт не отвечает в течении 6 секунд, то скрипт выдаст что сайт не доступен.
На этом урок окончен. Желаю вам хорошо выучить AutoHotkey и делать отличные скрипты.
|
|
|
|
exocode |
Дата: Пятница, 28.08.2015, 23:09 | Сообщение # 2
|
Любитель
Сообщений: 34
Статус: Offline
|
А чем это не гоже? (вырвал из какого то старого своего скрипта , но точно помню что не я писал). Код ComObjError(false) HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1") HTTP.Open("GET", "http://microsoft.com") HTTP.Send() if (HTTP.ResponseText = "") msgbox "Сайт не доступен" else msgbox "Сайт доступен"
|
|
|
|
tumkin |
Дата: Суббота, 29.08.2015, 08:18 | Сообщение # 3
|
Tumkin Project
Сообщений: 1186
Статус: Offline
|
Цитата exocode ( ![Ссылка на цитируемый текст](http://s95.ucoz.net/img/fr/ic/4/lastpost.gif) ) ComObjError(false) HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1") HTTP.Open("GET", "http://microsoft.com") HTTP.Send() if (HTTP.ResponseText = "") msgbox "Сайт не доступен" else msgbox "Сайт доступен" Работает по такому же методу, но у меня ФУНКЦИЯ. А то есть для проверки доступности сайта нужно написать только 1 строку.
Так же в моем методе есть таймауты. С твоим методом будет долго проверять, около 15-30 секунд. Когда при моем методе всего 6
Используя функции, код будет меньше раз в 10
|
|
|
|
exocode |
Дата: Суббота, 29.08.2015, 17:46 | Сообщение # 4
|
Любитель
Сообщений: 34
Статус: Offline
|
Цитата tumkin ( ![Ссылка на цитируемый текст](http://s95.ucoz.net/img/fr/ic/4/lastpost.gif) ) долго проверять, около 15-30 секунд Ниразу такого не замечал. Сейчас сделаю замер.Добавлено (29.08.2015, 17:46) --------------------------------------------- Сделал замер несколько раз , проверка проходит примерно за 3000 миллисекунд. 15-30 секунд даже и рядом нету.
|
|
|
|
tumkin |
Дата: Суббота, 29.08.2015, 18:51 | Сообщение # 5
|
Tumkin Project
Сообщений: 1186
Статус: Offline
|
Цитата exocode ( ![Ссылка на цитируемый текст](http://s95.ucoz.net/img/fr/ic/4/lastpost.gif) ) Сделал замер несколько раз , проверка проходит примерно за 3000 миллисекунд. 15-30 секунд даже и рядом нету. Ты сделай првоерку на несуществующий сайт
|
|
|
|
exocode |
Дата: Суббота, 29.08.2015, 21:18 | Сообщение # 6
|
Любитель
Сообщений: 34
Статус: Offline
|
Цитата tumkin ( ![Ссылка на цитируемый текст](http://s95.ucoz.net/img/fr/ic/4/lastpost.gif) ) Ты сделай првоерку на несуществующий сайт Сделал , ответ пришёл за 8000 м\с опять же не пахнет тут 15-30ью секундами.
|
|
|
|
tumkin |
Дата: Суббота, 29.08.2015, 23:41 | Сообщение # 7
|
Tumkin Project
Сообщений: 1186
Статус: Offline
|
Цитата exocode ( ![Ссылка на цитируемый текст](http://s95.ucoz.net/img/fr/ic/4/lastpost.gif) ) Сделал , ответ пришёл за 8000 м\с опять же не пахнет тут 15-30ью секундами. Господи, я писал образно, просто мой метод работает быстрее и его удобней использовать
|
|
|
|
exocode |
Дата: Воскресенье, 30.08.2015, 11:21 | Сообщение # 8
|
Любитель
Сообщений: 34
Статус: Offline
|
Цитата tumkin ( ![Ссылка на цитируемый текст](http://s95.ucoz.net/img/fr/ic/4/lastpost.gif) ) я писал образно Так зачем тогда утверждать? P.S Я возможно не увижу разницу ведь в моем коде проверка используется всего один раз.Добавлено (30.08.2015, 11:21) --------------------------------------------- + Проверил ваш скрипт , на несуществующем сайте , на все про всё уходит 7000мс , в моем 8000-8500мс , разница маленькая , но получается что ваш быстрее , потому его советуется использовать. Оптимизация какая никакая а есть. P.S Использовать можно.
|
|
|
|
tumkin |
Дата: Воскресенье, 30.08.2015, 15:31 | Сообщение # 9
|
Tumkin Project
Сообщений: 1186
Статус: Offline
|
Цитата exocode ( ![Ссылка на цитируемый текст](http://s95.ucoz.net/img/fr/ic/4/lastpost.gif) ) P.S Я возможно не увижу разницу ведь в моем коде проверка используется всего один раз. А если ты используешь скрипт, который постоянно подключается к сайту? То тогда придется постоянно проверять есть ли соединение с сайтом, чтобы скрипт не зависал. Если нету соединения, то например появляется msgbox и нас предупреждает о том, что сервер не работает. Ведь сначала сайт может работать, а потом перестать и скрипт начнет жестко зависать - это же AHK
|
|
|
|