|
APEX не дожидается ответа от сервера
|
|||
---|---|---|---|
#18+
Здравствуйте. Проблема такая: Есть процедура, которая с помощью Apache POI обрабатывает данные xls таблицы. Через Oracle SQL Developer запускаю эту процедуру, обрабатывая файл размером 10МБ - работает нормально. Запускаю ту же процедуру, но размер файла уже составляет 100МБ - работает нормально. А теперь то же самое, но процедуру пихаю в процесс, а процесс вешаю на Submit кнопку в APEX-е. 10МБ обрабатываются абсолютно так же и после выполнения процедуры я получаю ответ о том, что строки обработаны. А вот при обработке файла размером 100МБ ответ не приходит (процесс загрузки просто виснет). Параллельно с выполнением процесса, сделал select * from data_input (таблица, в которой хранятся обработаные данные) и оказалось, что все строчки уже успешно обработались, но загрузка так и не прекратилась. Пробовал запускать ту же процедуру в APEX-е с помощью AJAX, думал, это поможет. Но эффект тот же - строки обрабатываются, но клиент ответа от сервера не дожидается. Просьба помочь разобраться. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi Версия APEX 3.2.1.00.12 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 14:22 |
|
APEX не дожидается ответа от сервера
|
|||
---|---|---|---|
#18+
P.S. файл размером 100МБ через oracle sql developer обрабатывается около 30 минут. Apex тоже обработал примерно за 30 минут (ну если только чуть-чуть дольше), но сказать об этом он мне и через 2 часа не удосужился. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 14:32 |
|
APEX не дожидается ответа от сервера
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 15:15 |
|
APEX не дожидается ответа от сервера
|
|||
---|---|---|---|
#18+
haXbat, А в чем смысл? Мне не нужно продолжать работу с приложением во время выполнения процесса, как раз наоборот. Мне нужно чтобы пользователь 1 раз нажал на кнопку, ушел курить и через N-ое количество времени получил 1 ответ "я выполнился". Не понимаю смысла использования APEX_PLSQL_JOB. Если я не прав, просветите. Сразу скажу, что лишние кнопки типа "проверить статус загрузки" не могут быть использованы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 15:28 |
|
APEX не дожидается ответа от сервера
|
|||
---|---|---|---|
#18+
Простое решение: выполняйте JOB и делайте logout ил подкрутите схему авторизации Более сложное решение: выполняйте JOB и поищите какой-ибудь скрипт, например на jQuery (в инете дофига должно быть), который блокирует страницу, + через dynamic action можно пускать ajax запросы с проверкой статуса этого Jobа, и если выполнен запускайте скрипт разблокировки. Впрочем, насчет подкрутить timeout, тоже можно попробовать поискать, но не сталкивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2011, 19:28 |
|
APEX не дожидается ответа от сервера
|
|||
---|---|---|---|
#18+
_dmt_, С APEX_PLSQL_JOB отпадают проблемы закрытия браузера/перезагрузки компьютера пользователем: всегда можно проверить статус джоба. Для таких долгих процессов я бы еще добавил оповещение через email об успешном/не успешном завершении. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:56 |
|
APEX не дожидается ответа от сервера
|
|||
---|---|---|---|
#18+
Всем спасибо, проблема решена с помощью APEX_PLSQL_JOB. Вот код header-а, если кому-то понадобится: Код: 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.
А вот код процесса check_job_status: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
P.S. при создании джобы, я кладу ID файла в колонку STATUS, хотя по-хорошему надо просто передавать параметром номер джобы, но в моем случае мне удобнее работать через ID файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2011, 17:24 |
|
|
start [/forum/topic.php?fid=50&msg=37406262&tid=1876416]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 447ms |
0 / 0 |