Экспорт по HTTP

Страницы: 1
RSS
Экспорт по HTTP, Библиотека для экспорта данных по HTTP
 
Посидел, немного подумал, что было бы неплохо для организации быстрого обмена данными из QUIK?
И пришла в голову мысль получать данные по HTTP напрямую без посредников.
В итоге накатал либу с веб сервером, с помощью которой можно напрямую вызывать методы LUA скриптов и возвращать результат по HTTP.
Есть конечно ограничения, но если будет кому-нибудь интересно, допилю, и буду поддерживать проект.
Установка:
1) Содержимое с архивом ложим в папку с QUIK
2) Добавляем в QUIK DelphianTransactor.lua и запускаем его
По умолчанию указан порт 15000, внутри архива лежит понятное ReadMe, там описано как вызывать.
Но если кому не охото читать, то для наглядности в браузере заходим

_хттп://127.0.0.1:15000/?call=test1¶ms=123

потом

_хттп://127.0.0.1:15000/?result=check

...
Тем самым будет вызвана функция из functions.lua, туда же и можно складывать свои клиентские функции
https://cloud.mail.ru/public/B3sj/Lk2nimCeJ
В ближайшее время накатаю класс на php (обёртку)
Жду на почту (delphiec90@mail.ru)
 
Странно, тут редактирование сообщения не доступно вот ссылки (сверху поломались)

http://127.0.0.1:15000/?call=test1&params=123
http://127.0.0.1:15000/?result=check  
 
Админы, почините, ломается в ссылке знак амперсанда params
 
Версия 0.2 https://cloud.mail.ru/public/8YQS/iCMpBEJM3
 
Версия 0.3 [url]https://cloud.mail.ru/public/5Pey/huwhha7AR[/url]
v.0.3 Исправлена ошибка. В случае возврата пустого значения функцией QLUA, её выполнение зацикливалось.
 
Версия 0.3 https://cloud.mail.ru/public/5Pey/huwhha7AR
 
Версия 0.3https://cloud.mail.ru/public/5Pey/huwhha7AR
 
Это уже не смешно  :D , серьёзно, как редактировать свои сообщения?
 
PHP Class  для вызова функции из PHP через DelphianTransactor
https://cloud.mail.ru/public/Mkrh/A7HcryVCz
 
Версия 0.4 https://cloud.mail.ru/public/25PU/dSSS8Ab7K
Добавил возможность делать GET и POST HTTP-запросы из QLUA.

Теперь, можно вызывать функции QLUA как ИЗ ВНЕ по HTTP, так и из QLUA делать GET и POST запросы.
(и никакой мороки с подключением luasocket и т.д.), запустил DelphianTransactor.lua и всё работает.
 
можно я задам один вопрос: -Зачем это?
и второй вопрос: -зачем это здесь?
 
Затем, чтобы без особых проблем экспортировать данные, кинул либу и забыл. Никакой мороки с подключением luasocket
 
т.е. возня с подключением/настройкой хттп сервера с пыхом - это конечно же "никакой мороки с подключением"? :))

вообще-то для этих целей DDE есть.
не, я все понимаю, хочется поизобретать велосипеды. это весело и похвально.

 
Причем тут PHP?
 
Цитата
delphiec _ пишет:
Причем тут PHP?
Прошу прощения. не удосужился сразу взглянуть на внутренности.
Все равно вопрос остается: смысл-то какой в этом?

Я не в претензии, мне просто интересно. Что движет и какова цель?
 
Появилось желание решить некоторый проблемы и может кого-то уберечь от лишнего геморроя, подключил библиотеку и сразу можешь делать GET,POST запросы из QLUA, и вызывать функции QLUA  из вне, и не надо думать, что там и как надо править и куда засовывать luasocket, чтобы это заработало....

Это будет очень удобно для тех, кто хочет связать со своим WEB сервером QUIK, или с приложением.
А DDE кстати ограничен в возможностях, ODBC тоже геморройно, а qlua просто так этого делать не умеет.
 
delphiec _, было бы очень хорошо, если бы Вы выкладывали вместе с остальными файлами также исходник Вашей DLL.
 
Версии 0.3 исходники тут http://quik2dde.ru/viewtopic.php?pid=1488#p1488
 
Пример экспорта стакана на удалённый сервер с помощью данной либы
Код
link="http://192.168.1.100/index.php"
   
function OnQuote(class, sec)
    ql2 = getQuoteLevel2(class, sec);
   QuoteStr = "";
    for i = tonumber(ql2.bid_count), 1, -1 do
            if ql2.bid[i].quantity ~= nil then
               QuoteStr = QuoteStr..tostring(tonumber(ql2.bid[i].quantity))..":"..tostring(tonumber(ql2.bid[i].price))..";";
            else
               QuoteStr = QuoteStr.."0:"..tostring(tonumber(ql2.bid[i].price))..";";
            end
    end
   QuoteStr = QuoteStr.."*";
   for i = 1, tonumber(ql2.offer_count), 1 do
            if ql2.offer[i].quantity ~= nil then
               if i < tonumber(ql2.offer_count) then 
                  QuoteStr = QuoteStr..tostring(tonumber(ql2.offer[i].quantity))..":"..tostring(tonumber(ql2.offer[i].price))..";";
               else 
                  QuoteStr = QuoteStr..tostring(tonumber(ql2.offer[i].quantity))..":"..tostring(tonumber(ql2.offer[i].price));
               end
            else 
               if i < tonumber(ql2.offer_count) then
                  QuoteStr = QuoteStr.."0:"..tostring(tonumber(ql2.offer[i].price))..";";
               else
                  QuoteStr = QuoteStr.."0:"..tostring(tonumber(ql2.offer[i].price));
               end
            end
    end
   p={}
   p[1]='class='..tostring(class,1)
   p[2]='sec='..tostring(sec,1)
   p[3]='quote='..QuoteStr
    DT_HttpPost(link,p)
end
 

Чем-то подобным встречаем, только лучше в базу а не в файл
Код
 <?php
if ((isset($_POST['class'])) and (isset($_POST['sec'])))
{
    file_put_contents("test.txt",$_POST['class']." ".$_POST['sec']." ".$_POST['quote'].PHP_EOL,FILE_APPEND);
}
echo("ok");




К чему это я....  с данным модулем, надо всего лишь добавить

Код
p={}
   p[1]='class='..tostring(class,1)
   p[2]='sec='..tostring(sec,1)
   p[3]='quote='..QuoteStr
    DT_HttpPost(link,p) 
И получаем экспорт данных во внешний мир  :)
 
Данную ветку можно закрывать, продолжение тут https://forum.quik.ru/forum11/topic781/
Страницы: 1
Читают тему
Наверх