Kast2k Posted December 7, 2018 Share Posted December 7, 2018 Добрый день! Есть ЕХЕ файл на сервере, при его запуске с параметрами происходит формирование графического файла заданного формата. Вопрос: Как правильно реализовать на Unigui следующий процесс: 1. Пользователь через UniFileUpload загружает документ на сервер 2. Ссылка на данный документ транслируется в ServerModule и он в свою очередь создает, запускает и добавляет в ThreadList поток для обработки файла. Внутри потока формируется строка параметров обработки и выполняется EXE файл с ожиданием окончания обработки. Далее, получившийся файл копируется во временную папку Unigui и отправляется обратно пользователю для скачивания. Имеет ли такая идея право на жизнь или необходимо как-то по другому построить процесс взаимодействия? (ServerModule = singleton) Спасибо. Link to comment Share on other sites More sharing options...
stas Posted December 7, 2018 Share Posted December 7, 2018 Сам по себе файл не отправится Варианты 1) Таймер 2) Long Poll 3) WebSocket Наиболее просто для разработчика таймер Link to comment Share on other sites More sharing options...
Tokay Posted December 7, 2018 Share Posted December 7, 2018 топикстартеру: что именно вызывает затруднение? послать файл юзеру можно, например, с помощью UniSession.SendFile. прямо из потока, правда, не получится. но можно сделать какой-то флаг, что файл для посылки готов, его проверять по юзерскому таймеру (TUniTimer), и как файл 'созрел', кинуть его юзеру. Link to comment Share on other sites More sharing options...
Kast2k Posted December 7, 2018 Author Share Posted December 7, 2018 Особых затруднений нет, кроме того, сможет ли сервис (Server Module) создавать потоки и не приведет ли это к внезапной остановке приложения на пустом месте с отсутствием каких-либо ошибок, как уже бывало ранее (пример, на страничке находится разноцветный UniDBGrid, обновление данных по таймеру (3000 мс), компоненты FD в DataModule, никаких действий больше в программе нет. Скомпилирован в Windows Service - > может самопроивзольно зависнуть при просадке сети. При этом ни в Event Log, ни в логах приложения ни слова = просто висит и на него не зайти). Спасибо за комментарии, я примерно так и хотел реализовывать. Link to comment Share on other sites More sharing options...
stas Posted December 7, 2018 Share Posted December 7, 2018 Вы не можете отправить файл, пока его не попросили, работа с вебсервером ведётся в режиме вопрос ответ, потому и виснет Link to comment Share on other sites More sharing options...
Kast2k Posted December 7, 2018 Author Share Posted December 7, 2018 20 minutes ago, stas said: Вы не можете отправить файл, пока его не попросили, работа с вебсервером ведётся в режиме вопрос ответ, потому и виснет Вы меня видимо не совсем так поняли я привёл пример простейшего приложения по опросу БД по таймеру, которое у меня подвисает, хотя все Exceptions по работе с БД прописаны Link to comment Share on other sites More sharing options...
Tokay Posted December 7, 2018 Share Posted December 7, 2018 С TUniTimer всё должно работать. Link to comment Share on other sites More sharing options...
Tokay Posted December 7, 2018 Share Posted December 7, 2018 fix. Link to comment Share on other sites More sharing options...
stas Posted December 8, 2018 Share Posted December 8, 2018 А почему у Вас threadtimer, должен быть обычный а в потоке давайте uniservermodule какой-то флаг, а в таймере его проверяйте У меня так телеграмовский бот работает Link to comment Share on other sites More sharing options...
Tokay Posted December 8, 2018 Share Posted December 8, 2018 fix Link to comment Share on other sites More sharing options...
stas Posted December 8, 2018 Share Posted December 8, 2018 Я имею в виду TUniTimer, Только он должен лежать на форме Link to comment Share on other sites More sharing options...
Tokay Posted December 8, 2018 Share Posted December 8, 2018 да, так и есть. видимо я случайно серверный таймер использовал. с TUniTimer всё отлично работает! Link to comment Share on other sites More sharing options...
stas Posted December 8, 2018 Share Posted December 8, 2018 Рад, если будут вопросы, обращайтесь, я с унигуи ещё с тех времён, когда Фаршад в ньюсах публиковал информацию (сайта не было) Link to comment Share on other sites More sharing options...
stas Posted December 8, 2018 Share Posted December 8, 2018 Добрый вечер, у меня нет такого компонента, извините. Как Вы собираетесь это делать? Средствами ИИС у вас не получится, только нгинкс. Link to comment Share on other sites More sharing options...
stas Posted December 8, 2018 Share Posted December 8, 2018 Я когда-то делал чат на вебсокетах фаршадовской библиотекой, поищу на днях попытаюсь прикрепить пример, пока найти не могу, простите Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now