Сообщение evge » 26 янв 2017, 12:51
Ещё момент по контролю подключения терминала к серверам.
Написал маленький робот-советник, который отсылает HTTP запрос на мой сервер выделенный у хостера, который в свою очередь (задание cron) если не получал в заданный интервал времения (5 минут, настраиваемо) запросы от АД4, отсылает мне письмо на email о проблеме. Я всегда в курсе, что связь разорвана с терминалом, т.к. почта в смартфоне всегда под рукой.
код советника простой:
Код: Выделить всё
/**Activity
Developed by evge;**/
function Initialize()
{
StrategyName = "Activity";
AddParameter("timeout", 300, "", 0); // в секундах
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 0;
ShortLimit = 0;
}
function OnUpdate()
{
string email = "почта@почта.ру";
string url = "http://alfadirect4.ru/ad4/ping.php?email=" + email + "&timeout=" + (int)timeout;
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
System.Net.WebResponse resp = req.GetResponse();
System.IO.Stream stream = resp.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(stream);
string Out = sr.ReadToEnd();
sr.Close();
}
вешаем его на инструмент "долгоиграющий", например "USD=ВР TOM" и интервал ставим на 5 минут.
На серверной стороне пару скриптов:
ping.php, который сохраняет данные по параметру email (захэшенному) в файл: время последнего запроса и время запроса + timeout (второй параметр). Если запрос приходит вновь, данные обновляются.
task.php, который раз в 5 минут выполняется заданием cron на сервере и проверяет на превышение текущего времени с временем сохраненным в "время последнего запроса + timeout" сохраненные от ping.php данные в бд (файлы) и если время превышено, на этот email высылается сообщение о проблеме.
timeout должен быть >= 300 (6 минут), т.к. сейчас task.php выполняется каждые 5 минут, т.е. ниже 6 минут timeout не желателен, можно больше.
Ещё момент по контролю подключения терминала к серверам.
Написал маленький робот-советник, который отсылает HTTP запрос на мой сервер выделенный у хостера, который в свою очередь (задание cron) если не получал в заданный интервал времения (5 минут, настраиваемо) запросы от АД4, отсылает мне письмо на email о проблеме. Я всегда в курсе, что связь разорвана с терминалом, т.к. почта в смартфоне всегда под рукой.
код советника простой:
[code]/**Activity
Developed by evge;**/
function Initialize()
{
StrategyName = "Activity";
AddParameter("timeout", 300, "", 0); // в секундах
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 0;
ShortLimit = 0;
}
function OnUpdate()
{
string email = "почта@почта.ру";
string url = "http://alfadirect4.ru/ad4/ping.php?email=" + email + "&timeout=" + (int)timeout;
System.Net.WebRequest req = System.Net.WebRequest.Create(url);
System.Net.WebResponse resp = req.GetResponse();
System.IO.Stream stream = resp.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(stream);
string Out = sr.ReadToEnd();
sr.Close();
}[/code]
вешаем его на инструмент "долгоиграющий", например "USD=ВР TOM" и интервал ставим на 5 минут.
На серверной стороне пару скриптов:
ping.php, который сохраняет данные по параметру email (захэшенному) в файл: время последнего запроса и время запроса + timeout (второй параметр). Если запрос приходит вновь, данные обновляются.
task.php, который раз в 5 минут выполняется заданием cron на сервере и проверяет на превышение текущего времени с временем сохраненным в "время последнего запроса + timeout" сохраненные от ping.php данные в бд (файлы) и если время превышено, на этот email высылается сообщение о проблеме.
timeout должен быть >= 300 (6 минут), т.к. сейчас task.php выполняется каждые 5 минут, т.е. ниже 6 минут timeout не желателен, можно больше.