Что нового

[Сеть, интернет] Пинг через определенное время

.me

Новичок
Сообщения
89
Репутация
1
Все привет, подскажите, пожалуйста, есть код
Код:
Opt("TrayIconHide", 1)
$sData = InetRead("https://site.ru/ping.php")
$nBytesRead = @extended

MsgBox(4096, "", "Прочитанных байт: " & $nBytesRead & @CRLF & @CRLF & BinaryToString($sData))

все работает, конечно, но, как сделать, допустим, повторную проверку сайта чере "N" минут?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
Opt("TrayIconHide", 1)
$sec = 30
While 1
	$sData = InetRead("https://site.ru/ping.php")
	$nBytesRead = @extended

	MsgBox(4096, "", "Прочитанных байт: " & $nBytesRead & @CRLF & @CRLF & BinaryToString($sData))
	Sleep($sec*1000)
WEnd



Добавлено:
Сообщение автоматически объединено:

p.s. Если надо определить именно доступность, есть же команда Ping
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
Belfigor
Все вроде как работает, но, в то же время, статистика в скрипте не отображается, т.е, скрипт работает, выводит сообщегние.
Но, в скрипте статистики на сервере:
Все хиты 1
если убить процесс и запустить его снова, в статискике скрипта отображается
Все хиты 2
если же запустить и ждать то видно только сообщения о скаченных байтах
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Ну, я не в курсе как статистика на сайте сделана, пхп может фиксировать каждую новую сессию. Добавь в свой ping.php, идентификатор последнего обращения, который будет браться get запросом из обращающегося на сервер скрипта autoit, и сохраняй этот идентификатор. Скрипт каждый раз будет передавать на сервер случайное число, а сервер, глядя на это число будет сопоставлять его с предыдущим, если оно не соответствует то он будет изменять статистику а текущий идентификатор сохранять в базу для последующего сравнения с новым.

Да даже просто можешь сессию инициализировать каждый раз со случайным числом. Но таки имхо более верно было бы обращаться не через inetget, а через IEOpen, тогда даже твоя текущая статистика должна была бы работать. Я через IEOpen совершал тысячи обращений на свой сервер авторизации в минуту, работало всё стабильно, пока роутер не сдох из-за нагрузки :(
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
Belfigor
Так вот, проблема то в том, что ид сессии записывается и посещения делятся на
-Хосты
-Все хиты
первый пишет только уникальные, второй все что обращалось, ну и дополнительно, если можно, то получится ли как то передавать запрос с параметром
Допустим
ip=ip-машины или какие либо другие параметры различия между машинами, где был запущен exe?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Конечно, если у тебя есть доступ к ping.php, научи его принимать гет запросы, первая ссылка из яндекса:
_http://rio-shaman.ru/razrabotka-cms/php-s-nulja/get-i-post-zaprosy/
В гет запросе ты можешь передать огромное количество различных нужных тебе параметров, например макадресс машины или что-либо еще. Я так привязывал учетки юзеров к машинам где был запущен ехе файл. где-то на форуме была UDF, которая позволяла составить уникальную маску компьютера, не помню название. Я просто передавал на сервер такой уникальный ID и тем самым привязывал логин и пароль к конкретному компьютеру.
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
Да, нашел функцию, я, очевидно, изначально не по тому пути пошел
Код:
Opt("TrayIconHide", 1)
$sec = 30
While 1
$sPD = 'parm1=aaa&parm2=bbb'
$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("POST", "https://site.ru/ping.php", False)
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send($sPD)
$oReceived = $oHTTP.ResponseText
$oStatusCode = $oHTTP.Status

ConsoleWrite($oStatusCode & @CRLF)
;ConsoleWrite($oReceived)
If $oStatusCode = 200 Then
	;Process the response $oReceived
Else
	MsgBox(16, "Error " & $oStatusCode, $oReceived, 7)
EndIf
WEnd


Belfigor, спасибо за помощь


Belfigor [?]
де-то на форуме была UDF

а вот этого я пока не нашел, как передать данные через сей запрос
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
ты через POST запрос передаешь, передай через GET. Чтобы передать инфу через GET запрос, достаточно открыть нужный php скрипт указав параметр после знака "?". Например ping.php?unic_id=sdfgsdfgh. А скрипт в переменную $_GET['unic_id'] получит то самое значение что ты указал после =. UDF про которую я говорил лишь собирает инфу о железе установленном на компьютере и формирует её в так называемый сирийник. Почитай основы php. Там всё очень просто, через get запросы и сессии можно вынести всю критическую логику своего скрипта и прочие вещи которые надо выполнять не в клиенте, а централизованно, на сервер.

И используй тег autoit выкладывая куски кода автоита.
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
Belfigor, спасибо еще раз за ответы, попробую подучить php.

Belfigor [?]
Я просто передавал на сервер такой уникальный ID и тем самым привязывал логин и пароль к конкретному компьютеру.
если можно пример, как оно было?=)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
.me,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
madmasles, исправил, прощу прощения.
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
.me

Код в первом сообщении нужно вставить между тегами AutoIt -
autoit.gif
 
Автор
M

.me

Новичок
Сообщения
89
Репутация
1
Нашел решение, всем спасибо.
 
Верх