Страница 1 из 1

очередь задач

Добавлено: 08 апр 2019, 05:51
andrey volkov
Дано: ФМСервер и приложение, которое на нем крутится. Для n пользователей
В пользовательских сценариях есть и такие, которые выполняются на сервере (PSOS). Файлмейкер так устроен, что такие сценарии на сервере запускаются в отдельных сессиях параллельно.
Но
Один из сценариев требует, чтобы он исполнялся сервером строго последовательно, один за другим, даже если два пользователя вызовут его одновременно. То есть нужна некая организация очереди.
Возможно, у кого-то уже есть проверенные отработанные методы организации очереди или соображения. Просьба описать схематически.

Re: очередь задач

Добавлено: 08 апр 2019, 20:39
Alexei Sytch
Андрей, можно создать запись в таблице "Очередь" ( название скрипта для запуска, параметры, дата и время создания).
На сервере запускается по расписанию "управляющий скрипт", который циклом обходит все записи в этой таблице в порядке создания и запускает скрипты по названию

Re: очередь задач

Добавлено: 09 апр 2019, 06:33
andrey volkov
Алексей, спасибо за отклик
Все сложнее и интереснее.
Необходим не вариант с серверным сценарием (schedula). Нужна возможность запустить скрипт на сервере моментально (PSOS). Но требуется, чтобы он, скрипт, не наложился на другой подобный, а ждал в таком случае своей очереди. Возможно, кто-то уже и делал такое. На грабли наступать не хочется

Re: очередь задач

Добавлено: 11 апр 2019, 07:17
andrey volkov
собственно варианты могут быть какими. Понятно, что нужно опознать, выполняется ли скрипт уже на сервере в другой сессии. сделать это не сложно. Вопрос в том, что делать в случае, если обнаружено, что выполняется параллельный процесс.
1) записать задачу в таблицу "очередь" и выйти. Предоставить скрипту, который уже "трудится" завершить все задачи.
2) ожидать, пока другой скрипт закончит работу и приступить к выполнении своей задачи.

Все не так просто. в каждом варианте есть плюсы и минусы