powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Программа с %
19 сообщений из 19, страница 1 из 1
Программа с %
    #39714921
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

В Cache можно запускать программу с % в область %SYS
чтобы она могла работать и для остальных областей ?
(job^%RTName)
Например какой-то сокет на какой то порт.
Я пробовал, но почему-то работает только в той
области откуда была запущена.

Спасибо.
...
Рейтинг: 0 / 0
Программа с %
    #39714943
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Запускать можно из любой области, верно. А что значит работает только в той области откуда запущена?
А где ещё нужно чтобы работала, и как вы это проверяете?
...
Рейтинг: 0 / 0
Программа с %
    #39714950
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Я бы хотел запускать ее в %sys на подобия сервиса,
один раз запустил и забыл.

Так в Каше работает VisM, MSM-Activate, etc.
Запускаются при старте системы.
Пользователь только переключается между областями ZNAMESPACE...
...
Рейтинг: 0 / 0
Программа с %
    #39714956
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuDAiMor,

Я бы хотел запускать ее в %sys на подобия сервиса,
один раз запустил и забыл.

Так в Каше работает VisM, MSM-Activate, etc.
Запускаются при старте системы.
Пользователь только переключается между областями ZNAMESPACE...И это конечно возможно, можно через ZSTART запускать.
...
Рейтинг: 0 / 0
Программа с %
    #39714957
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ее можно конечно смампировать для всех областей,
но интересен этот подход.
...
Рейтинг: 0 / 0
Программа с %
    #39714958
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

% и так смаппирован на все области. Есть скрытый системный маппинг, там описано.

Все ещё не понятно, в чем проблема, что не работает?
...
Рейтинг: 0 / 0
Программа с %
    #39714962
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorИ это конечно возможно, можно через ZSTART запускать.
Понятно, я так и делаю. Но она только в %SYS и работает !
Как только переключаюсь в другую область, перестает отвечать на
программы что в этой области.
Думал может подход особый нужен для этого.
...
Рейтинг: 0 / 0
Программа с %
    #39714973
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuПонятно, я так и делаю. Но она только в %SYS и работает !
Как только переключаюсь в другую область, перестает отвечать на
программы что в этой областиНе совсем понятно, что вы имели в виду, но да, если вы переключитесь на другую область, то программы из предыдущей перестанут быть видны. Объекты тоже перестанут работать, если они типов классов, которые в этой области не видны.
А как должно быть?
...
Рейтинг: 0 / 0
Программа с %
    #39714982
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,
В GT.M немного не так, там нету области как в Каше.
В Каше каждой области соответствуют какие то наборы программ и глобалов,
я так понимаю. Вот, когда я переключаюсь из %SYS в USER , программы из USER
не отвечают на мои запросы, хотя программа %RTName запущенная в %SYS
должна удовлетворять требованиям моим запросам уже в этой области ...
...
Рейтинг: 0 / 0
Программа с %
    #39714998
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Может вы используете какие то объекты, которые видны только в той области откуда запущена программа.
тогда могут быть проблемы, а так код спокойно может переключаться между областями, даже с открытыми объектами, если код классов этих объектов доступен в целевой области.

Какие ошибки у вас появляются?
...
Рейтинг: 0 / 0
Программа с %
    #39715009
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Я с обьектами вообще не работаю.
Обычный М код + глобалы
Ошибок никаких пока не вижу.
Покопаюсь еще, может что-то сам неправильно делаю.
...
Рейтинг: 0 / 0
Программа с %
    #39715045
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuКак только переключаюсь в другую область, перестает отвечать на
программы что в этой области.Если ошибок нет, то что значит перестает отвечать?
...
Рейтинг: 0 / 0
Программа с %
    #39715103
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuДобрый день.

В Cache можно запускать программу с % в область %SYS
чтобы она могла работать и для остальных областей ?
(job^%RTName)
Например какой-то сокет на какой то порт.
Я пробовал, но почему-то работает только в той
области откуда была запущена.

Спасибо.

В доке на команду job указано
Код: plaintext
routine(routine-params):(process-params):timeout
видимо надо указывать
Код: plaintext
job^%RTName(передаваемые,параметры):("область где надо стартовать")
...
Рейтинг: 0 / 0
Программа с %
    #39715118
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я,
Считайте, что это TCP сервер, хотя так и есть.
Наподобие Вашего (interconect).
Он у Вас же общий для любой области. Запускается
из %SYS ???
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
%srv  ; Code based on the MiniM ^%srv protocol and ported to Cache
 w "Cache TCP server ^%srv.",!
 n port,dev
 s port=$g(^%SRV("port"),5001)
 s dev="|TCP|"_port 
 o dev::1 e  d  q
 . d log("Server ^%srv is already running.")
 c dev
 j sdmn::1 e  d  q
 . d log("Failed to run ^%srv server.")
 d log("Cache TCP server ^%srv has been run.")
 q
 ....
....


или я что то путаю ?
Если не прав поправьте.
...
Рейтинг: 0 / 0
Программа с %
    #39715141
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему нашел.
Моя функция, хотя вроде меняет область,
на самом деле я остаюсь по прежнему в %SYS ...
JS:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
//**** Ajax Function ZNamespace Cache'
function ZN( zname ) {
      //var adrip = document.getElementById("ipnr").value
      var callback = function(req){
      var zncode = req.responseText;
      console.log(zncode);
      //document.getElementById('zn').innerHTML =  "Your work Namespace is: " + zncode;
      document.getElementById('znmsp').value = zncode
   };
    AJAX( "GET", "/cache/znamespace/user/" + zname, null, callback );
}



M:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
ZN ;;Compilation tools WinBuilder company "ELTRANSSOFT" :[20.10.2016 07:51:09]
   ;; Copyright 2016, 2018 Valeriu Gontia
 s cmd=$p(%fcgi("i","header","DOCUMENT_URI"),"/",4)
 s nms=$p(%fcgi("i","header","DOCUMENT_URI"),"/",5) 
 s ^goncmd($h)=cmd
 i cmd="webZV" d ZVersion q
 i cmd="user" d cmdZN(nms) q
 ;;
cmdZN(input)
 ;;
 n $es n $et s $et="g:'$es errXE"
 ZNSPACE input
 s %fcgi("o","stdout")=$ZNSPACE_$c(13,10)
 s %fcgi("o","header","Content-Type")="text/plain"
 q
 ;;  
errXE
 s err=$ze,$ec="" 
 s ^errXE($h)=err
 q
 ;; 


Хотя в консоле явно получаю не область %SYS ..
...
Рейтинг: 0 / 0
Программа с %
    #39715150
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriuну я,
Считайте, что это TCP сервер, хотя так и есть.
Наподобие Вашего (interconect).
Он у Вас же общий для любой области. Запускается
из %SYS ???
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
%srv  ; Code based on the MiniM ^%srv protocol and ported to Cache
 w "Cache TCP server ^%srv.",!
 n port,dev
 s port=$g(^%SRV("port"),5001)
 s dev="|TCP|"_port 
 o dev::1 e  d  q
 . d log("Server ^%srv is already running.")
 c dev
 j sdmn::1 e  d  q
 . d log("Failed to run ^%srv server.")
 d log("Cache TCP server ^%srv has been run.")
 q
 ....
....


или я что то путаю ?
Если не прав поправьте.

Там область с клиента прилетает. Примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Open(server,port,database)
 n saveio,dev,connect,answ
 s saveio=$io
 s dev="|TCP|"_port
 i $$devopened(dev) q 0
 o dev:(server:port:"S"):1 e  d  q 0
 . s %cli(0,"err")="Failed to connect to "_server_":"_port
 s connect=$i(%cli)
 s %cli(connect,"dev")=dev
 u dev:(:::$c(10)) w *-3 r answ:10
 i answ=("<OK>:"_$c(0)) d  u saveio q connect
 . s answ=$$Read(connect,"$zv")
 . i answ["MiniM" d Execute(connect,"zn """_database_"""")
 . i answ["Cache" d Execute(connect,"d $zu(5,"""_database_""")")
 u saveio c dev
 s %cli(connect,"err")=answ
 s %cli(0,"err")="Failed to connect to "_server_":"_port
 q 0
Это код для Cache, клиентская часть MiniM Interconnect

Для разных М серверов выбрал делать по-разному, мне так показалось проще сделать стабильный работающий вариант.

Для Cache команда znspace одно время не на всех версиях работала корректно с переключением из несистемной в системную, но точно деталей уже не припоминаю (как и положено старожилам ;)))).

А для GT.M такого понятия вроде как совсем не нашел, там отдельно существуют каталог программ и каталог глобалов, устройство настроек сложное, я решил оставить это админам и программистам, пусть сами вызовут нужные переключения.
...
Рейтинг: 0 / 0
Программа с %
    #39715181
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuМоя функция, хотя вроде меняет область,
на самом деле я остаюсь по прежнему в %SYS ...
т.е. вы делаете через асинхронный вызов переход в другую область, а со следующим вызовом оказывается что вы не там?
Я не знаю, как у вас реализован процесс для сессии, в которой происходит обработка комманд.
Может у вас обработчик запросов остался в той области и не перешел, может у вас новый процесс создается под каждый запрос.

А еще очень вероятно, где то может стоять new без аргументный, который все возвращает. команда new в Cache работает и для переменной $namespace которая меняется при переходе в другую область, и соответвенно при выходе вернет область обратно автоматически.
...
Рейтинг: 0 / 0
Программа с %
    #39715341
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Я тоже подозреваю одну из этих причин...
С ВЕБ-ом я не так давно работаю и видимо
не все нюансы учел.
Может действительно, при каждом запросе создается
новый процесс, во всяком случае, JOB-ы разные.
Тогда как это можно побороть ?
...
Рейтинг: 0 / 0
Программа с %
    #39715349
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

В качестве решения можно запоминать где-то область. И переходить в нее при каждом выполнении запроса.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Программа с %
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]