Имя: Пароль:
1C
 
v8: Как организовать паузу на сервере под линухом? - решено
0 mikecool
 
07.06.11
09:28
Сабж
Ситуация - формируется файл, потом должен упаковаться. Не успевает записаться файл к тому моменту, когда запускается упаковка.
Пока придумал
Пока 1=1 Цикл
 Если Файл.Существует() Тогда
   Упаковать
   Прервать
 Конецесли;
Конеццикла
+ отслеживать отказ в случае ошибки сохранения
Может есть что проще
1 aleks-id
 
07.06.11
09:31
можно обработчик ожидания прикрутить и уже в нем проверять - есть ли файл. если файл есть - отключаем обработчик ожидания и упаковываем файл.
2 Axel2009
 
07.06.11
09:33
в 1ске придумали задержка = текущаядата()+5 и цикл пока текущаядата < задержки....
3 Asmody
 
07.06.11
09:34
потом  будет ветка от автора типа v8: 1C-ка хавает ЦП
4 mikecool
 
07.06.11
09:48
(3) я знаю про (2), и соответственно про v8: 1C-ка хавает ЦП ))
(1) обработка ожидания на сервере не доступна, или у меня аривой сп?
5 mikecool
 
07.06.11
09:48
кривой*
6 mikecool
 
07.06.11
09:49
(3) мой цикл тоже не айс, но он хоть ничего не вычисляет...
но - проверка существования файла тоже может быть затратна
7 Axel2009
 
07.06.11
10:13
(6) а если ось отфутболит создание по правам? вечный цикл?
8 mikecool
 
07.06.11
10:16
(7) это регламент, выполняться не более 10 минут поставлю, к примеру
это во первых
да и вроде как во временной папке не должно футболиться
и в последних, если попробовать
Попытка
 Файл.Записать()
Исключение
 Отказ = Истина

и потом уже
Если не Отказ и далее по тексту
9 aleks-id
 
07.06.11
10:17
поищи в командах никсов - не верю, что там нет возможности дождаться выполнения программы...
10 Fragster
 
гуру
07.06.11
10:17
(0) HTTPСоединение, вызывающее скрипт, который делает паузу
11 Fragster
 
гуру
07.06.11
10:18
(9) на сервере нет КомандаСистемы и ЗапуститьПриложение, а HTTPСоединение есть.
12 mikecool
 
07.06.11
10:18
(10) омг )) я так не умею
13 Fragster
 
гуру
07.06.11
10:20
(12) в следствии (11), по другому - никак, ибо цикл - не вариант
14 mikecool
 
07.06.11
10:21
(13) должен быть хтмл код, который организует паузу?
15 Fragster
 
гуру
07.06.11
10:23
(14) зачем? может быть скрипт на любом интерпретируемом языке, программа и прочее. на никсах веб сервер поднимается за 5 минут с поддержкой cgi, в %wwwroot%/cgi-bin/ кидается скриптик, умеющий паузу, и он вызывается через localhost/cgi-bin/pause.sh
16 Fragster
 
гуру
07.06.11
10:24
или поднимается сервак с поддержко
17 Fragster
 
гуру
07.06.11
10:25
... php, в %wwwroot% кидается pause.php примерно такого содержимого:
<?php
sleep($_GET['ms']);
echo 'done';
?>
и вызывается как http://localhost/pause.php?ms=1000
18 Fragster
 
гуру
07.06.11
10:26
ух, как растаращило
19 mikecool
 
07.06.11
10:27
(18) вротмненоги
20 Axel2009
 
07.06.11
10:35
21 Fragster
 
гуру
07.06.11
10:36
(20) ага, ком объект на сервере под линуксом...
22 Axel2009
 
07.06.11
10:36
ой емае.. линух.. сори =)
23 mikecool
 
07.06.11
10:42
а просто BODY.pause() в html не прохляет?
стырено с http://forums.techarena.in/software-development/1229206.htm
24 aleks-id
 
07.06.11
10:49
(11) я знаю что нет. я из этого вышел под виндами так:


Процедура ВыполнитьКомандуСистемы(Команда) Экспорт
   ScrptCtrl=Новый COMОбъект("MSScriptControl.ScriptControl");
   ScrptCtrl.Language="vbscript";
   ScrptCtrl.AddCode("
   |Function ExecSys()
   |Dim oWsh
   |Dim sResult
   |
   |Set oWsh = CreateObject(""Wscript.Shell"")
   |sResult = oWsh.Run(""" + Команда + """, 1, True)
   |
   |End Function
   |");
   Результат = ScrptCtrl.Run("ExecSys");
КонецПроцедуры
25 mikecool
 
07.06.11
10:50
(24) под виндами я пользую
   scr = Новый COMОбъект("WScript.Shell");
   scr.Run("ping 127.0.0.1 -n " + КоличествоСекунд, 0, 1);
26 aleks-id
 
07.06.11
10:54
(25) а я запускаю этой командой архивацию, и она сама ждет когда отработает ;)
27 Fragster
 
гуру
07.06.11
10:55
(23) не проканает
28 mikecool
 
07.06.11
11:24
(10) "HTTPСоединение, вызывающее скрипт" какой метод у HTTPСоединение вызывает скрипт?
29 mikecool
 
07.06.11
11:25
+28 через ОтправитьДляОбработки?
30 Fragster
 
гуру
07.06.11
11:29
например Получить
31 mikecool
 
07.06.11
11:30
(30) про Получить подумал, ему тогда надо какое то имя файла дать....
32 mikecool
 
07.06.11
11:32
а сервер 1с с пхп никак не связан? если щас поднять пхп - не потрется чего в модулях сервера 1с?
33 Fragster
 
гуру
07.06.11
11:39
не, норм будет
34 mikecool
 
07.06.11
11:40
HTTP.Получить("http://localhost/pause.php?ms=" + КоличествоСекунд * 1000 + """ target=""_blank"" ref=""nofollow"" class=""extralink"">http://localhost/pause.php?ms=" + КоличествоСекунд * 1000, ПолучитьИмяВременногоФайла());    
я с запятыми не напутался?
35 Fragster
 
гуру
07.06.11
11:40
Формат(КоличествоСекунд * 1000, "ЧГ=")
36 mikecool
 
07.06.11
11:41
(35) а, точняк, спс
37 Fragster
 
гуру
07.06.11
11:41
ну и ссылку-то по нормальному вставь:

"http://localhost/pause.php?ms="
38 Fragster
 
гуру
07.06.11
11:41
остальное - косяк мистовского движка
39 Fragster
 
гуру
07.06.11
11:41
главное - в браузере на сервере проверь
40 mikecool
 
07.06.11
11:42
(39) ок, спс
41 mikecool
 
07.06.11
11:43
щас поднимется пхп и проверю )
42 mikecool
 
07.06.11
14:12
43 Fragster
 
гуру
07.06.11
14:14
(42) забыл временный файл удалить
44 Fragster
 
гуру
07.06.11
14:14
ну и в пинге - количество секунд + 1
45 Fragster
 
гуру
07.06.11
14:15
а на сервере - слип в миллисекунды надо преобразовать (на 1000 умножить)
46 mikecool
 
07.06.11
14:15
(43) блин ))
47 mikecool
 
07.06.11
14:15
(44) зачем? вот этого я не понял, честно
48 mikecool
 
07.06.11
14:15
(45) хз, проверили у нас - слип принимает секунды
49 mikecool
 
07.06.11
14:16
+48 т.е. sleep(5) отрабатывает 5 секунд
50 mikecool
 
07.06.11
14:17
+49 возможно реализация пхп другая
51 Fragster
 
гуру
07.06.11
14:18
(47) чтобы слал на 1 пакет больше (ибо если 1 пакет, то он сразу примется и вернется, а 2 - один примется, секунда пауза, второй примется и вернется)
52 mikecool
 
07.06.11
14:20
(51) понял, поправлюсь
поправил статью
53 Fragster
 
гуру
07.06.11
14:21
(52) забыл удаление файла вставить :)
54 Fragster
 
гуру
07.06.11
14:23
кстати, в мануале сказано, что секунды, так что отбой :)
55 mikecool
 
07.06.11
14:24
поправил статью ))