forum.bitel.ru http://forum.bitel.ru/ |
|
[5.2] Вывод результатов в управлении дин. кодом. http://forum.bitel.ru/viewtopic.php?f=22&t=8157 |
Страница 1 из 1 |
Автор: | Phricker [ 17 июн 2013, 14:33 ] |
Заголовок сообщения: | [5.2] Вывод результатов в управлении дин. кодом. |
Код: Информация о версии: Клиент: вер. 5.2 сборка 1169 от 29.04.2013 19:05:29 os: Windows 8; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45 Сервер: вер. 5.2 сборка 1487 от 26.04.2013 16:34:20 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_37 Проблема в следующем. Есть скрипт, который я запускаю через управление дин.кодом. В вывод результатов попадает что-то около 5000-6000 строк. Клиент биллинга долго отрисовывает окно с результатами выполнения скрипта. Это заметно по изменению формы курсора. Когда скрипт выполняется - курсор в виде стрелочки. При отрисовывании окна - курсор выглядит будто я что-то печатаю (выделяю текст). Если этот же код запустить через глобальные скрипты поведения (классы Java), то окно с результатами появляется примерно сразу же как завершается выполнение скрипта. +/- 1-2 секунды. И еще замечание. Если запускать через классы Java в глобальных скриптах поведения - окно клиента виснет до тех пор, пока не закончится выполнение скрипта. При выполнении же через Скрипты BGBS в глобальных скриптах - появлялось окно "Скрипт выполняется. Результаты смотрите в логах". И можно было продолжать работать. |
Автор: | dimOn [ 17 июн 2013, 14:55 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
Т.е. выполняется сразу, а рисует долго? Цитата: И еще замечание. Если запускать через классы Java в глобальных скриптах поведения - окно клиента виснет до тех пор, пока не закончится выполнение скрипта. При выполнении же через Скрипты BGBS в глобальных скриптах - появлялось окно "Скрипт выполняется. Результаты смотрите в логах". И можно было продолжать работать. В этом и был смысл - синхронное выполнение/вывод как в иде. Для отладки только и не более. Асинхронно сделать ну никак не получится, т.к. выполняется на сервере ведь. И выполняется по другому.Т.е. надо убрать отсюда окошко и тоже рисовать потом как-нибудь, как всё завершится? |
Автор: | Phricker [ 17 июн 2013, 15:30 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
dimOn писал(а): Т.е. выполняется сразу, а рисует долго? Именно. Запустил только что через динкод, выполнялось секунд 20, а результаты не появляются уже минут 5. Цитата: рВ этом и был смысл - синхронное выполнение/вывод как в иде. Для отладки только и не более. Асинхронно сделать ну никак не получится, т.к. выполняется на сервере ведь. И выполняется по другому. Т.е. надо убрать отсюда окошко и тоже рисовать потом как-нибудь, как всё завершится? Ну тогда и не суть важно. Его в любом случае используют только для отладки. upd: появилось ~ через 6-7 минут после старта. |
Автор: | dimOn [ 17 июн 2013, 16:11 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
хм, не очень понятно почму так долгоу... возврат долгий результата или как? там просто после выполнения возвращается результат и всё. |
Автор: | dimOn [ 17 июн 2013, 17:40 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
там, конечно, форматирование через html так что скорее всего на огромных документах просто тупо тормозит. но как избежать этого я даже не знаю... |
Автор: | Phricker [ 17 июн 2013, 17:43 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
Угу. Я тоже проверил на простом выводе - выводит практически моментально. На более сложном где дофига текста - выводит как я уже сказал, достаточно долго. Просто было непонятно почему через глобальные скрипты выводит как и положено, а через дин.код все гораздо дольше. В любом случае это не постоянные случаи так что если невозможно избежать - пускай будет ![]() |
Автор: | dimOn [ 17 июн 2013, 17:50 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
проверил кодом, выводит сразу... Код: package foo.bar;
public class Test5000 { public static void main( String[] args ) { for( int i=0; i<5000; i++ ) { System.out.println("line"+i); } } } |
Автор: | dimOn [ 17 июн 2013, 17:55 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
код такой даёт довольно громоздкий html но тоже довольно быстро рендерится) но памяти слегка отжирает, да. может выделить побольше? Код: public class Test5000
{ public static void main( String[] args ) { for( int i=0; i<5000; i++ ) { System.out.print("l");System.err.print("i");System.out.print("n");System.err.print("e");System.out.println(i); } } } |
Автор: | Phricker [ 17 июн 2013, 18:08 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
Проверял вот таким кодом. Код: package ru.ellcom.test; import java.sql.*; import java.util.Date; import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase; import ru.bitel.bgbilling.server.util.Setup; import ru.bitel.common.sql.ConnectionSet; public class testDimon extends GlobalScriptBase { @Override public void execute( Setup setup, ConnectionSet connectionSet ) throws Exception { Connection con = connectionSet.getConnection(); String query = "SELECT id FROM contract"; java.sql.PreparedStatement ps = con.prepareStatement( query ); ResultSet rs = ps.executeQuery(); Date newDate = new Date(); while ( rs.next() ) { int id = rs.getInt(1); print("Договор с id = " + id + " был замечен за неправомерными действиями в месяце " + newDate ); } } } Результаты в видео http://www.youtube.com/watch?v=6N-fbU5yulA Причем оно до сих пор еще не вывелось в дин.коде. Хотя прошло уже минут 4-5 Через глобальные скрипты вывелось практически моментально, даже учитывая что это тестовый сервер. А через дин.код - сами понимаете ![]() |
Автор: | dimOn [ 17 июн 2013, 18:19 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
600 договоров у меня в БД - мгновенно вывело ) |
Автор: | dimOn [ 17 июн 2013, 18:21 ] |
Заголовок сообщения: | Re: [5.2] Вывод результатов в управлении дин. кодом. |
скопипастил код 10 раз подряд - секунд 20 и вывело. так что могу заключить, что УМВР ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |