Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
Приветствую Есть приложение которое несколько минут формирует данные, подскажите как лучше запускать и выводить потом сформированные данные на страницу csp. Где-то на форуме это обсуждалось , но вот не смог найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2010, 23:36 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
gr_vl, http://localhost/csp/docbook/DocBook.UI.Page.cls?KEY=GZAP_page_really_programming#GZAP_C137584Background Tasks on the Server There is a mechanism for starting a background job from a Zen page and tracking its progress within the page. This can be useful for cases where a page needs to initiate a long-running task and wants to provide some degree of feedback to the client while waiting for that task to complete. A Zen page class has a backgroundTimerInterval property. This is the interval, in milliseconds, at which timer events are fired to check on the status of background tasks started by this page. The default is 1000. Two methods support background tasks; both are available in any class that inherits from %ZEN.Component.page: %RunBackgroundMethod starts a background job to run a class method of this Zen page. %RunBackgroundMethod returns a %Status value and may have one or more arguments: The first argument, a %String, is the name of the class method to run. Depending on the method signature, a variable number of arguments may follow; these are the arguments of the method named in the first argument. Zen monitors only one background task at a time. If %RunBackgroundMethod is called while a previous background task is running, the new method becomes the current monitored task. The previous task runs to completion, but the client is not notified about it. %SetBackgroundMethodStatus can be called from within a method that is running in the background, to update its own status information. %SetBackgroundMethodStatus has no return value and takes two arguments: A %String specifies the status message that will be seen by the client page. The string may be empty. An optional %Float value indicates how much of the background task is complete (as a percentage between 0 and 100). A client page can use this information to display progress to the user. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 02:17 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
gr_vlкак лучше запускать Джобом. И возвращать управление странице... gr_vlвыводить потом сформированные данные на страницу csp. Как вариант... - Джоб пишет куда-то данные о прогрессе анализа данных - Страница с неким таймаутом выводит этот прогресс у себя на странице - По окончании всего показываются итоговые данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 09:03 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
а если задача снялась по ошибке? какой то максимальный таймаут и пользователь не знает о том что программа не отработала? Кто нибудь делал с запуском в фоновом процесе и обработкой ошибок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 09:22 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
gr_vlа если задача снялась по ошибке? Таки пусть джоб сам про это и напишет куда-то... Принимающая страница все обработает как надо... gr_vlКто нибудь делал с запуском в фоновом процесе и обработкой ошибок? У нас например так работает давно... Вот например вариант с новым синтаксисом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. Вот Код: plaintext как раз и пишет принимающей странице сообщение об ошибке... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 09:27 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
если JOB вывалится с ошибкой конечно есть try catch на это или если по старому $ZTrap хотя может конечно случится когда процесс может упасть не успев обработать ошибку, например процесс убили вручную, или произошла критическая ошибка в коде самой Cache, и процесс падает сам, тогда можно параллельно мониторить, жив ли процесс например так $d(^$J(JOB интересующего процесса)) _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 09:43 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
DAiMorмониторить, жив ли процесс например так $d(^$J(JOB интересующего процесса)) Либо пусть джоб блокирует какой-то глобал... А принимающая страница пусть проверяет состояние блокировки этого глобала... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 09:49 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
ну блокировки это разумеется, как например в моем коды который ты привел, там ставится блокировка на глобал с логами но осуществлять контроль по блокировкам удобен, когда в один момент может существовать только один процесс занятый этой операцией, а вот когда нужно к примеру сформировать отчет, такой контроль не подойдет _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 09:55 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
DAiMorа вот когда нужно к примеру сформировать отчет, такой контроль не подойдет Все там подойдет... Только блокировать нужно будет не "весь" глобал, а некие узлы в глобале. Например по логинам пользователей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 10:32 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
gr_vl, Возможно, Вы это искали:Timeout для отдельной csp-страницы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 10:55 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
krvsaDAiMorмониторить, жив ли процесс например так $d(^$J(JOB интересующего процесса)) Либо пусть джоб блокирует какой-то глобал... А принимающая страница пусть проверяет состояние блокировки этого глобала... USER>w $zv Cache for Windows NT (Intel/P4) 5.0.15 Процесс ставит лок l +a($j) в панели управления появляется блокировка. Иду в таск менеджер, убиваю процесс с этим $j. В панели управления блокировка осталась. USER>w $zv Cache for Windows (x86-32) 2009.1 Поведение то же самое. Если процесс ушел, то его $j может быть выдан одному из следующих. Или я что-то неправильно понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 12:46 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
если процесс умер, должна пропасть и блокировка но вы проверяете это на не очень хорошей версии Cache, может быть там с этим проблемы я проверил сейчас на Cache for UNIX (Linux Intel/32-bit) 5.0.20 (Build 6305) Fri Sep 16 2005 12:47:21 EDT и у меня блокировки пропадают вместе с процессом за номер JOB отвечает операционка, и она не даст процессу появившемуся в след за умершим, тот же номер, номер будет увеличиваться если проверять существование процесса раз в несколько минут, то этого будет достаточно чтобы быть уверенным что, будет проверятся действительно один и тот же процесс для дополнительной проверки, можно чтобы тот процесс сообщал PID процесса родителя ($ZP) _________________________________ Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:00 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
ну яИли я что-то неправильно понимаю? Не знаю... Но у нас много какие задачи работают на принципе блокировки... В том числе и формирование статотчетности... Правда блокируем не локальные, а глобальные переменные... Вот потестил у себя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:02 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
Проверил и с нальтом... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:07 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
Есть даже вариант с неким "управление" процессами... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:20 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
И в самом джобе Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:24 |
|
||
|
Длительный расчет в CSP
|
|||
|---|---|---|---|
|
#18+
DAiMorно вы проверяете это на не очень хорошей версии CacheМеханизм очистки таблицы процессов Cache от умерших (в ОС - "не своей смертью") процессов нормально заработал, если не ошибаюсь, начиная с 5.0.20. Другое дело, что имеет место задержка - от 10 минут до 1 часа (точнее не скажу, но не 10 секунд :). В Linux, возможно, очистка проходит быстрее. Желающие поэкспериментировать: запустите процесс в терминале, сделайте Lock +aaaaaa, откройте таблицу блокировок в Портале и убейте процесс (не крестиком, а в Диспетчере задач Windows / "kill -9 pid" в Linux). Блокировка в таблице на какое-то время останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 14:14 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=36501427&tid=1558173]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
134ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 494ms |

| 0 / 0 |
