За последние 24 часа нас посетили 30509 программистов и 1792 робота. Сейчас ищут 1129 программистов ...

Нагрузка

Тема в разделе "Прочие вопросы по PHP", создана пользователем siiXth, 14 мар 2010.

  1. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Занялся написанием одного проекта и заинтересовался нагрузкой.
    Объясню на примере блогов. Предположим у нас есть запись в блоге , инфа о авторе , комментарии. Для вывода из бд нужно 3 запроса. Предположим напишу код благодаря которому эти 3 запроса заменятся на простой include пхп файлов в которых будет данная инфа. И дальше предположим что 200 человек практически одновременно зайдут на данную страницу создав такую приличную нагрузку. Где нагрузка будет меньше и насколько ? +Если заменить 1 запрос комментов например на 50 инклудов...
    Есть затея чтобы при создании записи она не вносилась в бд , а создавалась в виде пхп файла. И так же интересно какова нагрузка если юзеры будут так же массово создавать такие записи - в сравнении создания пхп и заноса в бд.

    Отсюда вытекает вопрос безопасности: достаточно ли например в index.php обозначить
    Код (Text):
    1. define ( 'PHPINCLUDE', true );
    И в файле который инклудится написать
    Код (Text):
    1. if( !defined( 'PHPINCLUDE' ) ) die( "Error!" );
    Для того чтобы не было никаких шансов просмотреть пхп файл в котором хранится инфа.

    Спасибо. Чем больше инфы тем лучше.

    Давненько видел такую реализацию в каком-то скрипте онлайн игры с выводом лога боя. Стало интересно насколько это экономит.
     
  2. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    siiXth
    а самому померять слабо? Делаешь 10000 записей в бд и столько же фалов, запускаешь ab там и там и смотришь!
     
  3. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Спасибо , главное что поделился опытом :)
    Иногда не нужно заново крутить велосипед.
     
  4. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    Замер вывода 10к записей с коментами уже проверялся теперь радо проверить 10к инклудов

    Хотя для чистоты эксперемента непомешало бы и то и другое использовать что бы сравнивать все в одних еденицах...


    И Вообще SQL быстрее имхо там 1 запросом выбираем сразу все коменты по соответствующему блогу и выводим а тут что предлогают 10к пхп файлов для инклуда? пусть будет один файл на пхп с информацией о коментах но новость то или запись в блоге не одна... да и вносить записи в файл сложнее надо соблюдать структуру документа что б нидаисвятойблокнот тебе ошибится хотя бы в 1 строчку все полетит в тар тарары..
     
  5. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Ну тогда комменты в 1 пхп. Неважно. И я не спрашивал про реализацию :D
    И так в итоге по нагрузке больше ничего ? :(
    Дело даже не в комментах , просто что лучше 200 запросов за пару сек или 200 инклудов...
     
  6. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    200 запросов... меня смущает нисколько инклуды сколько то что юзверю может захотется написать ОООООООчень большой коментарий...а так как это сравнимо с гостевой книгой и скажем в файле необязательно это будет php выделена одна строчка а в блокноте в нее умещается около 700 символов а потом идет поле для даты.
    и смотрим что получится если я напишу комент длиной в 705 символов к примеру где поседние слова это "Ибо я так думаю" и вместо даты у нас будет:
    ибо я так
    оставлено: думаю числа

    потом вопрос безопасности вставю я в такой комент скрипт и постираю весь твой сайт при первом же просмотре...

    конешно от всего этого можно зачиттится но неужели SQL и его mysql_escape_string вместе с полем для text в несколько миллионов символов не лучше?

    если же после всего этого я тебя не переубедил то добро пожаловать в топик http://www.php.ru/forum/viewtopic.php?t=19244
    поизвращайся над своими сценариями проведи тест и ждем твоего отчета...
     
  7. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    тоесть мне нужно проверить вместимость ? Много-много текста ?
    оу , вы слашали про проверку текста ? :)
    гляну , спс
     
  8. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    слышал потому и написал :
    Дословно =))
     
  9. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    В общем
    Код (Text):
    1. fwrite($fp,$text);
    Без проблем записывает 3000 символов в пхп :)
    Сейчас буду пробывать скорость.
     
  10. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    siiXth
    include нужен для одних вещей SQL нужен для других. Если ты не хочешь оставлять прямые реляционные ссылки на комменты и т.п. то можешь сохранять в файлы. Но вот при 10000 файлов, сколько будет искаться нужный в файловой системе это вопрос, и на сколько это будет отличаться в поиске внутри БД это тоже вопрос. Не известно что у тебя еще там будет. Поэтому смотри мой верхний пост.
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Выйгрышь от хранения данных в файлах может быть, если у тебя выделеный сервер, на нем установлена серверная ОС, а самих данных в файлах - несколько мегабайт, и сервер ничем больше не занят. Тогда иногда все нужные файлы будут оказываться в кеше жесткого диска :)
     
  12. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    у, не один я такой больной :)
    в зависимости от ФС и способа расположения этих файлов.
     
  13. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Поэксперементировал я немного...с бд немного бока , забил вообщем :)
    Не многого я добился :)

    0.25000300 1268564045 - Инклуд 10000 файлов с 3000 символами в каждом и с последующим выводом
    0.57813100 1268564117 - создание тех самых файлов

    Остались данные по бд :(
     
  14. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Да , народ , вопрос по безопасности в тс ответье :)
     
  15. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    как бы php файлы сами по себе закрыты от просмотра через прямой вызов ;)

    define поможет. Если такая параноя, то закройте каталог с нужными правилами апачевским deny from all
     
  16. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    siiXth
    расскажи как сортировку делать собираешься ;)
     
  17. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    незнаю , всё только в планах. первая мысль - создавать папочки по дате , в них файлы за день ,инфа о директории в главном файле в который инклудит ...
    есть лучше идеи ? :)
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ты на всех этих сравнениях дат создания, существования / отсутствия файлов в каталогах потеряешь достаточно пного, если большое количество файлов подключать собираешься.

    идеи есть всегда, я сейчас просто глумлюсь, не обращай внимания :)
     
  19. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    от куда такие страшно большие цифры ?? что за функцию для замера тыиспользовал? microtime??? и походу неформатированная.. могу сазать что данные неточны разбей функцию взрывчаткой по пробеллу и поменяй местами убрав спереди 0 =)
    и в конце теже функции после чего первое отниматеся от второго и получается время за которое был выполнен инклуд или запись php скриптов...
     
  20. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    Щас главное не сортировка а сам факт того что SQL производительнее чем отдельный php скрипт с готовым решением проблеммы.
     
  21. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    фак , я ещё не всё знаю :D
    загуглил "php скорость выполнения скрипта" и получил microtime :)
    так что делать ? я не понял :(
     
  22. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    не любо — не слушай, а мне интересно, к тому же, такая задача всё равно появится
     
  23. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ага , если определим что инклуд лучше :)
     
  24. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    думать
     
  25. vuzy

    vuzy Активный пользователь

    С нами с:
    11 мар 2010
    Сообщения:
    199
    Симпатии:
    0
    Адрес:
    киев
    Приведу готовый код... Взят из книги PHP 5 (Кузнецов, Симдянов, Голышев) страница 405 так и называется время генерации страницы.
    Они ж не знали что мы тут ими будем не генерацию тестить а соревнования проводить... ели бы знали то назвали бы "какая функция быстрее работает", но сути дела не меняет.
    Функция microtime() возвращает фремя в микросекндак и секундах прошедшее с 1 января 1970 года день рождения у него тогда был =) и мы получаем некую строчку типа "0.48023600 1076713360" ну и ее мы развернем а потом отнимем от почти такой же цифры.
    PHP:
    1.  
    2. <?
    3. //помещаем время старта в переменную $begin_time
    4. $part_time=explode(' ',microtime());
    5. $begin_time=$part_time[1].substr($part_time[0],1);
    6.  
    7. //тут выполняем тестируемый скрипт... пустые строки на скорость не влияют поэтому можно отступать сколько угодно
    8. //строк что б поднять читабельность
    9.  
    10.  
    11. $part_time=explode(' ',microtime());
    12. $end_time=$part_time[1].substr($part_time[0],1);
    13. //выводим результат
    14. echo $end_time - $begin_time;
    15. //4.98896002769 к примеру... ничего больше =))
    16.  
    17. ?>
    18.  
    ЗЫ я не слушаю интернет я его читаю =)