Jump to content
  • 0

Страница грузится не полностью.


crystal_vv
 Share

Question

При загрузке страницы, содержащей около 2000 строк не в таблице, просто через

. Страница грузится не полностью. Понимаю, что проблема в интернете, но может быть можно что либо сделать со страницей, чтобы столько данных по любому каналу всетаки догружалось?

Link to comment
Share on other sites

Recommended Posts

  • 0
При загрузке страницы, содержащей около 2000 строк не в таблице, просто через

. Страница грузится не полностью. Понимаю, что проблема в интернете, но может быть можно что либо сделать со страницей, чтобы столько данных по любому каналу всетаки догружалось?

Не, ну можно извратиться с AJAXом но стоит ли игра свечь? может все-таки где-то бесконечный цикл в серверной части, или тому подобное и просто срабатывает kill с хостинга? Время, приведенное на локальном компе, если честно, ни о чем не говорит. И еще вопрос, у Вас генерится страница в динамике, или статическая? если динамическая, может имеет смысл попробовать сохранить результат работы серверного скрипта на localhost, загрузить полученную html на сервачок, ну и качнуть ее и посмотреть, что получилось???

Link to comment
Share on other sites

  • 0
да вроде не долго он выполняется. На локальном серваке - 2.9 сек.

какие параметры машинки локальной, какая ОС, какая серверная часть, если есть? 2.9 сек для простого скрипта при приличной машинке (скажем, Пень 2 ГГЦ, с Гигом оперативы) - это ну просто ОЧЕНЬ долго. у меня на подобном компе скрипты на php с задачами полного перебора по большому числу данных ну конечно подольше висели, но все равно сравнимо с Вашим временем.

Link to comment
Share on other sites

  • 0
И еще вопрос, у Вас генерится страница в динамике, или статическая? если динамическая, может имеет смысл попробовать сохранить результат работы серверного скрипта на localhost, загрузить полученную html на сервачок, ну и качнуть ее и посмотреть, что получилось

Вот этот вариант попробую.

Страница динамическая. Строится дерево пользователей.

Блин сейчас обнаружил, что у меня запрос 2 секунды выполняется. Буду оптимизировать.

Комп:2ГГц 512Мб WindowsXP. Apache 2.2.6 PHP 5.2.6

Link to comment
Share on other sites

  • 0
И еще вопрос, у Вас генерится страница в динамике, или статическая? если динамическая, может имеет смысл попробовать сохранить результат работы серверного скрипта на localhost, загрузить полученную html на сервачок, ну и качнуть ее и посмотреть, что получилось

Вот этот вариант попробую.

Страница динамическая. Строится дерево пользователей.

Блин сейчас обнаружил, что у меня запрос 2 секунды выполняется. Буду оптимизировать.

Комп:2ГГц 512Мб WindowsXP. Apache 2.2.6 PHP 5.2.6

не хило так-то 2 сек ;) это притом, что Вы единственный пользователь на сервере.

Стопудово, проблема в длительности сборки страницы ;)

Link to comment
Share on other sites

  • 0
2.9 сек для простого скрипта при приличной машинке (скажем, Пень 2 ГГЦ, с Гигом оперативы) - это ну просто ОЧЕНЬ долго

угу. на машине п4 1800 + 512 рамы файл .doc весом 119 кБ конвертируется в хтмл за 2.25 сек в среднем.

если можно код исходный и исправленный (который 0.6) в топик

а топик собсна в php

Link to comment
Share on other sites

  • 0
Переписал запрос. Подправил в коде кое что. На локале теперь 0,6 секунд.

Радостный закинул на сервер и.... ничего не изменилось.

Блин.

ну а статическая версия скачивается?

ну тут еще могут быть тонкие моменты с настройками самого php и apache на сервере, куда Вы заливаете. Тут только логи надо смотреть, может, какой-то функционал из того, что Вы используете, не поддерживается сервером? ну еще вариант, код в студию, правда не по теме, надеюсь, модераторы нас простят

Link to comment
Share on other sites

  • 0

Статический вариант грузился минуту, но загрузился весь.

Кстати на локале Apache, а на серваке IIS.

В коде только запрос исправил. Разбил на два.

Ничего мудреного не использую. Все стандартно.

Link to comment
Share on other sites

  • 0
Статический вариант грузился минуту, но загрузился весь.

Кстати на локале Apache, а на серваке IIS.

В коде только запрос исправил. Разбил на два.

Ничего мудреного не использую. Все стандартно.

Мертвый сервак или канал, раз минуту грузилась статика... А есть доступ к серваку, или хотя бы к его логам? Ну а про ничего мудреного - знаете, раз в год и кочерга стреляет ;)

Link to comment
Share on other sites

  • 0

К логам доступ есть.

Вот строска появляющаяся при выполнении скрипта и загрузке страницы

2008-03-21 10:24:45 POST /index.php 80.242.77.91 HTTP/1.0 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon;+.NET+CLR+2.0.50727) http://www.d1055034.domain.com/index.php www.d1055034.domain.com 200 0 944958

Сервак где то в америке.

Link to comment
Share on other sites

  • 0
К логам доступ есть.

Вот строска появляющаяся при выполнении скрипта и загрузке страницы

2008-03-21 10:24:45 POST /index.php 80.242.77.91 HTTP/1.0 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+Maxthon;+.NET+CLR+2.0.50727) http://www.d1055034.domain.com/index.php www.d1055034.domain.com 200 0 944958

Сервак где то в америке.

да уж... неинформативно как-то... из сего только следует, что было обращение, но вот что за цифры 200 0 944958 хз.

Хорошо, еще вопрос, скрипт при выполнении никаких ошибок не выдает? т.е. если их нет на странице, может они есть в сорсах к ней (я имею в виду, когда на сгенерированной странице пытаемся ее исходник посмотреть)

Link to comment
Share on other sites

  • 0

200 - это статус (все ок)

0 - не знаю.

944958 - это число байт переданых сервером клиенту.

Ошибок на странице нет. Блин похоже надо менять вид представления информации клиенту. Чтобы не грузить столько данных. Только вот как дерево пользователей отобразить можно?

Link to comment
Share on other sites

  • 0
структура организации

Ну как, как, просто очень, JavaScript-ом например, я делал такую штуку, вывод дерева сотрудников, с возможностями разворота, на странице... двумерным массивом делается, или двумя одномерными, дело вкуса, только вот массивы все равно придется грузить.

Если организация с мало меняющимся штатом, то просто можно формирование массивов сделать дома, а на сервак уже загрузить готовые файлы и никакой динамики не будет, и все красиво. Там, где я это делал, так и было примерно реализовано. Т.е. штатное расписание обновляется раз в неделю, запускаем скрипт, который из штатного расписания делает массивы на JS, загружаем JS как статику на сервак и радуемся. Можете, кстати, попробовать такой скрипт написать, ну и на сервак загрузить и на нем запустить, вдруг корректно отработает.

И еще одна мысль мне тут пришла, если уж у Вас все в базе уже есть, само то сделать AJAX-ом, т.е. грузить сначала например, названия департаментов, когда юзер разворачивает депортамент, подгружаем список отделов, потом список групп, потом список сотрудников - летать просто будет, ну и сеть грузить совсем немного... а то уж Ваши почти мегабайт наводят на странные подозрения, а нужно ли пользователю сразу столько информации.

Link to comment
Share on other sites

  • 0

Имхо 1 метр получается из-за повторения названий отделов, филиалов, должностей. Я все-таки бы посоветовал загнать 2000 строк в базу в четыре таблицы например:

таблица филиалов

таблица отделов (департаментов)

таблица должностей

таблица работников

тогда таблица работников выглядела примерно бы так:

код филиала - код отдела - код должности - фио - телефон - логин (он же уникальный ключ) - md5(пароль) - пол (gender) - дата рождения - E-mail

и тогда можно было бы "вращать кубик" как понравиться: работники по филиалам, работники по должностям, должности по отделам, отделы по филиалам, филиалы по работникам и отделам, хоть процентное соотношение должностей по отделам в разрезе филиалов, хоть средний возраст работников по должностиям, хоть самый "престарелый" филиал ;) и т.д. в зависимости от достаточности информации, ессно дело.

а выбирать можно и AJAX'ом

Link to comment
Share on other sites

  • 0

Всем спасибо за советы. Но я не "развернул" мое понятие структура организации.

нет ни должностей, ни отделов, ни всего прочего.

Есть сетевой маркетинг: Верхушка "айсберга" и далее пошло кто под кем подписан.

Только имена и фамилии.

Ajax'ом я отображаю доп информацию о пользователе при наведении на него мышью (так что эта информация изначально не грузится).

Дерево может изменяться по несколько раз в день (зависит от числа новых подписанных пользователей) - так что о статике не может идти речь.

Запос дерева выполняется на локальном сервере за 200-250 мс. на загрузку страницы с выводом дерева "лесенкой" (или "ступеньками") уходит 0,6 сек.

Ту же информацию, но с сервера увидеть полностью пока так и не удалось.

Link to comment
Share on other sites

  • 0

Тогда таблица формируется так

id - parentId - fio - прочее

получается бесконечная вложенность. и список строиться так верхушка у кого parentId=0, затем щелчок по фио выбираются все те у кого parentId равен Id этого чела. и т.д до самого последнего в его цепочке. принцип надеюсь понятен.

Link to comment
Share on other sites

  • 0

Yarik Voronov Спасибо за ваши подсказки. Но видимо я все таки недообъяснил что мне надо было.

Есть дерево в виде множества подмножеств. Дерево или нужная ветка вибирается одним запросом.

Необходимо отображать всю ветку в раскрытом виде сразу.

Была проблема, что при отображении дерева нижняя часть не отображалась, просто страница обрывалась.

Путем шаманского колдовства удалось таки вычислить, что время выполнения скрипта превышает максимально допустимые 30 сек.

Таким образом был переписан рекурсивный алгоритм вывода дерева в не рекурсивный.

И время работы скрипта на локальной машине сократилось вдвое. На сервер еще не загружал, нашел что еще оптимизировать.

Link to comment
Share on other sites

  • 0

Нет, я конечно не настаиваю. Пишите как больше нравиться.

Вопрос только в 15-30 секундах (у хостера) - это на мой взгляд непозволительная роскошь - сколько на это оперативной памяти уходит? Может возникнуть проблема в отказе по поводу переполнения допустимой для скрипта оперативной памяти (по умолчания в php.ini 8 мегабайт), особенно эту память сжирают ассоциативные массивы.

Это на данный момент 2000 строк, у меня есть база 12 метров 94000 строк. Если с ней работать через файлы это +3 метра инфы и стабильно 1 секунда на поиск. в базе же в 6-10 раз бастрее. массив же всех (94000) значений из нее сформировать вообще не реально (да собственно и не нужно ;))

Вот например, скольким людям из 2000 человек нужно видеть сразу все дерево в развернутом виде? Я думаю 5-10 (пусть 100), остальным же 1900 только "свою" ветку и то до 4-5 уровня вверх. Вопрос: зачем парсить весь файл и фомировать из него массив весом 2-5 метров, а затем выбирать из массива 100 Кбайт актуальной информации?

Еще раз повторюсь, я не настаиваю. И пример, выборки в http://forum.htmlbook.ru/viewtopic.php?pid=53162#p53162 лишь часный вариант запроса к базе.

Кстати, если нужно все дерево и обязательно исходник как файл - то не проще ли копнуть в сторону XML + XSL-трансформаций?

Link to comment
Share on other sites

  • 0

Вы так ничего и не поняли. И хорошо, что не настаиваете.

Я только не понял при чем здесь файлы?

Все хранится в базе (MySQL).

Дерево смотрят только менеджеры, их пока около 3, смотрят они дерево от силы раз в месяц.

Кстати, 2000 пользователей это одна ветка дерева.

Менеджеру надо видеть все дерево(ветку) сразу!!! Это пока обязательное условие!!!

Выборка этой ветки из базы занимает около 150-200 мс - одним запросом.

Рисуется дерево(ветка) одним циклом.

Итого, после выкладывания на сервер вся операция стала занимать максимум пока что видел 2 сек.

И если вы не знаете задачу или понимаете ее не полностью(или понимаете так, как вам надо) то и не надо советовать, если что то непонятно - лучше переспросить.

P.S. На сервере память для скрипта ограничена 128М.

Link to comment
Share on other sites

  • 0
И если вы не знаете задачу или понимаете ее не полностью(или понимаете так, как вам надо) то и не надо советовать, если что то непонятно - лучше переспросить.

??

При загрузке страницы, содержащей около 2000 строк не в таблице, просто через

Страница грузится не полностью. Понимаю, что проблема в интернете, но может быть можно что либо сделать со страницей, чтобы столько данных по любому каналу всетаки догружалось?

Пожалуй это Вы не совсем правильно ставили задачу. И явно слова про БД появились только в последнум посте. разве не так? и не поправили сразу что все уже в БД. а я к своему великому сожалению не Шерлок Холмс, чтобы дедуктивно догадываться что откуда растет ;) Я конечно каюсь что невнимательно прочел пару слов в посте godima. просто если не знаете есть такой бородатый анектод про программиста и заблудившихся Шерлока Холмса и Доктора Ватсона: "Где мы находимся, уважаемый? В воздушном шаре, господа! Знаете Ватсон - это был программист... Почему Холмс? Элементарно, Ватсон! Во-первых,его ответ абсолютно точен, а во-вторых, совершенно бесполезен."

Если Вам стало смешно, значит все путем, ежели нет, значит... И да простят меня модераторы за флуд. Но что-то действително задело за живое.

А теперь действительно по теме. А может это не сервер в отказ падает, а браузер? Например, мне через браузер очень-очень редко удавалось загрузить файл более 1 метра (срывался даже при 600 Кб). Тогда может быть если

Дерево смотрят только менеджеры, их пока около 3, смотрят они дерево от силы раз в месяц

Кстати, 2000 пользователей это одна ветка дерева.

Менеджеру надо видеть все дерево(ветку) сразу!!! Это пока обязательное условие!!!

тогда стоит им выдать файл на сохраненние? и пусть они смотрят страницу с локалки, предварительно сохранив на диск? Но тогда ессно дело AJAX работать не будет и надо будет всю инфу включать сразу. (но Jаva Script работать будет...)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy