Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 04.09.2011, 21:16
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Ну мало ли, кто-то будет создаваться дольше... Я на Java уже писал сетевое приложение, реально с этим делом сталкивался. Правда там запросы создавались в разных потоках...
Ответить с цитированием
  #22 (permalink)  
Старый 04.09.2011, 21:49
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Всё! Победа! Наконец-то всё работает так, как оно и должно работать в идеале. Теперь я ставлю в ближайшей перспективе такие две цели:

1) Сделать красивый анимированный прогрессбар (сам прогрессбар уже есть), который будет отображать РЕАЛЬНЫЙ ход выполнения запроса
2) Сделать передачу методом POST всех строк сразу (либо в формате JSON, либо "склеив" их вручную). Это должно дать существенный выигрыш в скорости + избавить мои бедные логи от замусоривания бесконечными запросами к одному и тому же PHP-скрипту.

Есть только одна проблема: вторая задача слегка перечёркивает первую, поскольку в этой ситуации отследить реальную степень готовности вряд ли возможно... Кто что думает на этот счёт?
Ответить с цитированием
  #23 (permalink)  
Старый 06.09.2011, 01:00
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Ребят, ну подскажите кто-нибудь)
Я же ведь пока делать ничего не могу, пока не определюсь, надо ли GET на POST будет заменять...
Ответить с цитированием
  #24 (permalink)  
Старый 06.09.2011, 02:49
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от popov654 Посмотреть сообщение
2) Сделать передачу методом POST всех строк сразу (либо в формате JSON, либо "склеив" их вручную). Это должно дать существенный выигрыш в скорости + избавить мои бедные логи от замусоривания бесконечными запросами к одному и тому же PHP-скрипту.
звучит хорошо !) посмотрим,как это на деле будет)
Ответить с цитированием
  #25 (permalink)  
Старый 06.09.2011, 04:50
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217


У меня вначале POST использовался) Только передавалась всегда вся форма, что было весьма нерационально. Плюс скрипт записи был довольно сложный. Теперешний способ даёт крайне хорошие результаты при маленьких изменениях (1-29 запросов к БД), но совершенно чудовищные показатели при запросах больших, когда требуется проапдейтить хотя бы полтаблицы (и это при том, что я ВСЮ таблицу сократил в два раза!)
Только что проверял такую масштабную модификацию, это адова жесть. 20-25 секунд ожидания даже на локалке (!)
Я уже не говорю про бедные лог-файлы Апача - ничего себе 580 запросов за одно редактирование
Там кстати после всей этой радости ещё запускается маленький cleanup таблицы для совместимости со старыми версиями (удалить записи-"пустышки"). В итоге около 30 секунд приходится ждать до завершения. При сохранении при помощи кнопки снизу один раз браузер и вовсе завис в состоянии загрузки, уже после алерта с успешным завершением

Так что, видимо, буду переделывать.

Однако, смущает проблема с индикацией: если я сделаю POST, невозможно будет отследить прогресс запроса. Или всё-таки есть способ это сделать?
Ответить с цитированием
  #26 (permalink)  
Старый 06.09.2011, 08:11
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

Вам видимо доставляет большое удовольствие писать такие большие сообщения )) мне аж читать лень...
Ответить с цитированием
  #27 (permalink)  
Старый 06.09.2011, 09:11
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

1. Вообще это должно делаться методом POST. Уже потому что для сохранения данных этот метод и предназначен. POST и PUT. Метод GET предназначен для получения данных. Что мешает передавать на сервер не всю форму, а лишь измененные записи? Id: value.

2. Это должно происходить одним запросом, а не каждый запрос на одну запись. Это настолько нелепо и ресурсоемко, как сделано сейчас, что я не понимаю даже, как ты еще сам не догадался, что что-то в твоем методе не то.

3. Использовать AJAX, а не image.src. В принципе, это автоматом, если перепишешь на POST.

4.
Сообщение от popov654
если я сделаю POST, невозможно будет отследить прогресс запроса
А это нафиг и не нужно, понимаешь? Ты не файл загружаешь, чтобы показывать прогресс. Ты просто выполняешь запрос, который будет отрабатывать за доли секунды (ну если сделаешь нормально, а не как сейчас, когда за 25 секунд), зачем тут прогресс бар?
Ответить с цитированием
  #28 (permalink)  
Старый 07.09.2011, 00:16
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Да вот как видите, пока не сделал, не догадался. Кто же мог подумать, что это так долго будет происходить?
Хотя в принципе этого и следовало ожидать, 500-1000 запросов, 40 миллисекунд таймаут... Получаем 20-40 секунд времени на выполнение.
Из плюсов - ну во-первых всю форму не грузить когда пару оценок поменяли. Это вроде объективно.
Плюс код серверного скрипта, который вносит данные в базу, сократился до 8 строк (10 с небольшим с учётом всяких cleanup-ов). Было раза в 3 больше кода, кроме того, тот код был очень плохой (из-за плохой сопровождаемости, например он был чувствителен к ширине таблицы, которая задавалась в нём жёстко).
Ещё что было плохо - ну например, куча лишних записей в базе, не несущих никакой смысловой нагрузки, т.е. пустых, записываемых, что называется, "для симметрии".

А самое главное, я хотел попробовать AJAX в деле. Или передача данных через картинки - это не AJAX? Вроде бы это в учебнике в том же разделе описывалось...

Ну если время сократится так значительно, можно разумеется и без индикации обойтись. Впрочем, в случае загрузки файла я тоже не знаю как индикацию делать... Вот ВКонтакте это сделали - интересно, как)
Ответить с цитированием
  #29 (permalink)  
Старый 07.09.2011, 01:57
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Кстати, я сделал индикатор прогресса. Работает красиво, но код пока не очень хороший, поскольку я что-то налажал с получением координат элементов и вынужден был прописать числовые значения, что считается плохой практикой. Впрочем, сойдёт пока, всё равно от этого отказаться придётся потом
Ответить с цитированием
  #30 (permalink)  
Старый 07.09.2011, 07:32
Профессор
Отправить личное сообщение для popov654 Посмотреть профиль Найти все сообщения от popov654
 
Регистрация: 22.09.2010
Сообщений: 217

Старая версия будет доступна пока по адресу http://popov654.pp.ru/livemarks_old/login.html
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение Dojo. Kuzya59 Dojo toolkit 4 15.10.2011 15:42
Странное поведение... popov654 Общие вопросы Javascript 6 29.03.2011 05:14
Странное поведение переменной mycoding Серверные языки и технологии 4 14.01.2011 19:18
DragAndDrop у гридов в плавающих окнах странное поведение PavelK ExtJS 0 29.07.2010 15:26
Странное поведение replace cooli0 Общие вопросы Javascript 4 25.01.2010 17:16