Ну мало ли, кто-то будет создаваться дольше... Я на Java уже писал сетевое приложение, реально с этим делом сталкивался. Правда там запросы создавались в разных потоках... :)
|
Всё! Победа! Наконец-то всё работает так, как оно и должно работать в идеале. Теперь я ставлю в ближайшей перспективе такие две цели:
1) Сделать красивый анимированный прогрессбар (сам прогрессбар уже есть), который будет отображать РЕАЛЬНЫЙ ход выполнения запроса 2) Сделать передачу методом POST всех строк сразу (либо в формате JSON, либо "склеив" их вручную). Это должно дать существенный выигрыш в скорости + избавить мои бедные логи от замусоривания бесконечными запросами к одному и тому же PHP-скрипту. Есть только одна проблема: вторая задача слегка перечёркивает первую, поскольку в этой ситуации отследить реальную степень готовности вряд ли возможно... Кто что думает на этот счёт? :) |
Ребят, ну подскажите кто-нибудь)
Я же ведь пока делать ничего не могу, пока не определюсь, надо ли GET на POST будет заменять... :) |
Цитата:
|
:D
У меня вначале POST использовался) Только передавалась всегда вся форма, что было весьма нерационально. Плюс скрипт записи был довольно сложный. Теперешний способ даёт крайне хорошие результаты при маленьких изменениях (1-29 запросов к БД), но совершенно чудовищные показатели при запросах больших, когда требуется проапдейтить хотя бы полтаблицы (и это при том, что я ВСЮ таблицу сократил в два раза!) Только что проверял такую масштабную модификацию, это адова жесть. 20-25 секунд ожидания даже на локалке (!) Я уже не говорю про бедные лог-файлы Апача - ничего себе 580 запросов за одно редактирование :) Там кстати после всей этой радости ещё запускается маленький cleanup таблицы для совместимости со старыми версиями (удалить записи-"пустышки"). В итоге около 30 секунд приходится ждать до завершения. При сохранении при помощи кнопки снизу один раз браузер и вовсе завис в состоянии загрузки, уже после алерта с успешным завершением :( Так что, видимо, буду переделывать. Однако, смущает проблема с индикацией: если я сделаю POST, невозможно будет отследить прогресс запроса. Или всё-таки есть способ это сделать? |
Вам видимо доставляет большое удовольствие писать такие большие сообщения )) мне аж читать лень... :)
|
1. Вообще это должно делаться методом POST. Уже потому что для сохранения данных этот метод и предназначен. POST и PUT. Метод GET предназначен для получения данных. Что мешает передавать на сервер не всю форму, а лишь измененные записи? Id: value.
2. Это должно происходить одним запросом, а не каждый запрос на одну запись. Это настолько нелепо и ресурсоемко, как сделано сейчас, что я не понимаю даже, как ты еще сам не догадался, что что-то в твоем методе не то. 3. Использовать AJAX, а не image.src. В принципе, это автоматом, если перепишешь на POST. 4. Цитата:
|
Да вот как видите, пока не сделал, не догадался. :( Кто же мог подумать, что это так долго будет происходить?
Хотя в принципе этого и следовало ожидать, 500-1000 запросов, 40 миллисекунд таймаут... Получаем 20-40 секунд времени на выполнение. Из плюсов - ну во-первых всю форму не грузить когда пару оценок поменяли. Это вроде объективно. Плюс код серверного скрипта, который вносит данные в базу, сократился до 8 строк (10 с небольшим с учётом всяких cleanup-ов). Было раза в 3 больше кода, кроме того, тот код был очень плохой (из-за плохой сопровождаемости, например он был чувствителен к ширине таблицы, которая задавалась в нём жёстко). Ещё что было плохо - ну например, куча лишних записей в базе, не несущих никакой смысловой нагрузки, т.е. пустых, записываемых, что называется, "для симметрии". А самое главное, я хотел попробовать AJAX в деле. Или передача данных через картинки - это не AJAX? Вроде бы это в учебнике в том же разделе описывалось... Ну если время сократится так значительно, можно разумеется и без индикации обойтись. Впрочем, в случае загрузки файла я тоже не знаю как индикацию делать... Вот ВКонтакте это сделали - интересно, как) |
Кстати, я сделал индикатор прогресса. Работает красиво, но код пока не очень хороший, поскольку я что-то налажал с получением координат элементов и вынужден был прописать числовые значения, что считается плохой практикой. Впрочем, сойдёт пока, всё равно от этого отказаться придётся потом :)
|
Старая версия будет доступна пока по адресу http://popov654.pp.ru/livemarks_old/login.html
|
Часовой пояс GMT +3, время: 00:23. |