Приложение с доступом через интернет

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Приложение с доступом через интернет

Сообщение Ракшас » 29.11.2008 17:27:26

Подскажите по следующему вопросу:
Создается некоторое приложение, которое должно работать на сервере. Пользователи обращаются к нему через браузер, вводят данные в формы на web-странице, эти данные передаются в программу, она рассчитывает результат и возвращает его в браузер.
В настоящее время программа вызывается php-скриптом (команда system), при этом на каждый вызов создается своя копия программы.
Собственно вопросы:
1) Возможен ли другой вариант, реализации, когда будет запущена только одна копия программы, которая будет обслуживать всех пользователей? Если да, то какой это вариант, есть ли примеры?
2) Если другой вариант невозможен, то как можно ограничить, количество запускаемых копий программы, например пятью, шестью, десятью?

MS Windows XP SP2, ASP Linux 11
FPC 2.2.0, Lazarus 0.9.24.
Ракшас
незнакомец
 
Сообщения: 8
Зарегистрирован: 17.11.2008 17:07:35

Re: Приложение с доступом через интернет

Сообщение Timid » 29.11.2008 23:20:59

Встречный вопрос: Какая платформа (ОС) на сервере?

Смею предположить, что Linux.

В форуме есть исходник nYume - заготовки веб-сервера. Это основа вашей будущей системы.
Существуют два пути решения первой проблемы:
1. реализовать свой многопоточный веб-сервер куда будет направляться запрос из формы. Повесьте его на отдельный порт или Ip.
2. сделать "внутренний" веб-сервис, к которому будет обращаться php-скрипт. Open("localhost:3000") и т.д. Ваш сервис будет принимать и обрабатывать запросы только от локалхоста. Возвращать данные, к примеру, в XML. PHP скрипт уже представит ответ пользователю.

По второй проблеме. Ограничить количество запусков можно через мьютексы - увеличивать индекс в каком-нибудь хранилище при запуске, и уменьшать - при закрытии. Если индекс слишком велик, то завершаться сразу....
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Приложение с доступом через интернет

Сообщение Ракшас » 30.11.2008 00:36:01

Программа предполагается кроссплатформенной, чтобы могла работать и на Unix/Linux и на Windows серверах.
Ограничить количество запусков можно через мьютексы - увеличивать индекс в каком-нибудь хранилище при запуске, и уменьшать - при закрытии.

В принципе можно использовать отдельный файл. Но не будет ли ошибки при обращении к нему двух копий программы одновременно?
Существуют два пути решения первой проблемы

Спасибо огромное. Буду смотреть в этих направлениях.
Ракшас
незнакомец
 
Сообщения: 8
Зарегистрирован: 17.11.2008 17:07:35

Re: Приложение с доступом через интернет

Сообщение Vadim » 30.11.2008 08:18:59

Ракшас писал(а):Возможен ли другой вариант, реализации, когда будет запущена только одна копия программы, которая будет обслуживать всех пользователей?

Если сервер тоже написать на Паскале, то надо сделать многопоточную программу. Т.е. сама программа занимается только тем, что прослушивает определённый порт компьютера и ждёт какого-нибудь соединения. Дождавшись и получив IP клиента, запускает процедуру расчёта в отдельном потоке, получивши ответ, передаёт его этому IP-шнику.
Только не забудь после начала расчёта заблокировать кнопку "Расчёт" и вывесить сообщение - "Не жми мне на батоны, я считаю...", а то клиент будет в панике давить на кнопку "расчёт", запустит семь тысяч потоков и завалит сервер. :)
В разделе "Ссылки" этого сайта есть ссылка на компоненты "Indy" для построения всевозможных сетевых приложений. Эти компоненты кроссплатформенны, так что собрать веб-сервер для Win и для Linux труда не составит. Там же и примерчики можно взять.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Приложение с доступом через интернет

Сообщение Timid » 01.12.2008 11:08:07

Насчет ошибок при совместном доступе к файлу нужно поискать по ключевой фразе "блокировка доступа к файлу".
flock() или что-то подобное.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Приложение с доступом через интернет

Сообщение Ракшас » 01.12.2008 22:25:07

Насчет ошибок при совместном доступе к файлу нужно поискать по ключевой фразе "блокировка доступа к файлу".
flock() или что-то подобное

Спасибо, буду искать.
Ракшас
незнакомец
 
Сообщения: 8
Зарегистрирован: 17.11.2008 17:07:35


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

Рейтинг@Mail.ru