Jump to content

Использование стороннего процесса для возврата результата в виде файла


Kast2k

Recommended Posts

Добрый день!

Есть ЕХЕ файл на сервере, при его запуске с параметрами происходит формирование графического файла заданного формата.

Вопрос:

Как правильно реализовать на Unigui следующий процесс:

1. Пользователь через UniFileUpload загружает документ на сервер

2. Ссылка на данный документ транслируется в ServerModule и он в свою очередь создает, запускает и добавляет в ThreadList поток для обработки файла.

Внутри потока формируется строка параметров обработки и выполняется EXE файл с ожиданием окончания обработки.

Далее, получившийся файл копируется во временную папку Unigui и отправляется обратно пользователю для скачивания.

Имеет ли такая идея право на жизнь или необходимо как-то по другому построить процесс взаимодействия? (ServerModule = singleton)

Спасибо.

Link to comment
Share on other sites

топикстартеру: что именно вызывает затруднение?

послать файл юзеру можно, например, с помощью UniSession.SendFile. прямо из потока, правда, не получится. но можно сделать какой-то флаг, что файл для посылки готов, его проверять по юзерскому таймеру (TUniTimer), и как файл 'созрел', кинуть его юзеру.

Link to comment
Share on other sites

Особых затруднений нет, кроме того, сможет ли сервис (Server Module) создавать потоки и не приведет ли это к внезапной остановке приложения на пустом месте с отсутствием каких-либо ошибок, как уже бывало ранее (пример, на страничке находится разноцветный UniDBGrid, обновление данных по таймеру (3000 мс), компоненты FD в DataModule, никаких действий больше в программе нет. Скомпилирован в Windows Service - > может самопроивзольно зависнуть при просадке сети. При этом ни в Event Log, ни в логах приложения ни слова = просто висит и на него не зайти).

Спасибо за комментарии, я примерно так и хотел реализовывать.

Link to comment
Share on other sites

Вы не можете отправить файл, пока его не попросили, работа с вебсервером ведётся в режиме вопрос ответ, потому и виснет 

Link to comment
Share on other sites

20 minutes ago, stas said:

Вы не можете отправить файл, пока его не попросили, работа с вебсервером ведётся в режиме вопрос ответ, потому и виснет 

Вы меня видимо не совсем так поняли :) я привёл пример простейшего приложения по опросу БД по таймеру, которое у меня подвисает, хотя все Exceptions по работе с БД прописаны

Link to comment
Share on other sites

А почему у Вас threadtimer, должен быть обычный а в потоке давайте uniservermodule какой-то флаг, а в таймере его проверяйте

У меня так телеграмовский бот работает

Link to comment
Share on other sites

Рад, если будут вопросы, обращайтесь, я с унигуи ещё с тех времён, когда Фаршад в ньюсах публиковал информацию (сайта не было)

Link to comment
Share on other sites

Добрый вечер, у меня нет такого компонента, извините.

Как Вы собираетесь это делать?

Средствами ИИС у вас не получится, только нгинкс.

Link to comment
Share on other sites

Я когда-то делал чат на вебсокетах фаршадовской библиотекой, поищу на днях попытаюсь прикрепить пример, пока найти не могу, простите

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...