Инклуд большого файла

Тема в разделе "PHP", создана пользователем rasandrey, 24 окт 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Возник вопрос: у меня есть файл, весит сейчас 400Кб. Файл содержит массив из 4000 элементов. Нужно при загрузке index.php иклюдить файл для дальнейшей работы над массивом. Делаю так:
    PHP:
    require_once('model.php') ;
    Не слишком ли будет большая нагрузка на сервер, если посещаемость планируется от 10 000 уников в день?
    Нужно и можно ли как-то кешировать это дело?
     
  2. Paroxizm

    Paroxizm Создатель

    Регистр.:
    30 июл 2009
    Сообщения:
    30
    Симпатии:
    11
    Инклуд большого файла даст ощутимое замедление работы и нагрузку на сервер, т.к. этот файл будет каждый раз проходить синтаксический анализ, интерпретацию и компиляцию, а значит жрать память и проц.

    Если массив будет нужен однократно для одного пользователя - кешировать нет смысла. А если пользователь будет пользоваться им всё время - имеет смысл кешировать в сессии. Но экономия будет только на интерпретации файла, т.к. данные сессии чаще всего хранятся так же в виде файлов на диске или в таблицах БД.

    Если честно - слабо себе представляю задачу, в которой может понадобиться инклюдить в индексный файл почти полумеговый константный массив. Я бы на твоём месте задумался - может быть стоит что-то изменить в архитектуре скрипта и уменьшить объём данных или разбить их и грузить частями по мере необходимости.
     
  3. Haliff3007

    Haliff3007 Читатель

    Заблокирован
    Регистр.:
    17 мар 2007
    Сообщения:
    481
    Симпатии:
    196
    10к в день - это не шутки, с шареда вас выгонят, ну а если сервер - не стоит заморчиваться.
     
  4. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    кроме тормозов из-за самого размера, тормозить будет сам массив.
    по большому счету, скрипту понадобится перебрать 4000 єлементов, как вы сами считаете:
    почему вы не не хотите воспользоваться мускулом, ведь правильно составленный запрос будет работать быстрее?
     
  5. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Быстрее- это вряд ли. И с нагрузкой- тогда она ляжет не на пхп а на мусукл. Да и создавать мускул для одной только базы на 4к новостей- не лучшая идея.
    И зависит от задачи- если нужно выбрать 10 значений из массива, точно зная каких, или нужно перебирать все значения или большую часть, но не для того чтобы найти нужные (напр перебор массива, чтобы понять какие новости за текущий день) а какая-нить работа с ними (например генерация текста из массива) - лучше использовать пхп.
    Главное знать- грамотный sql запрос лучше чем неграмотное применение пхп.
    Чтобы понять- грамотное\неграмотное- сгенерируйте нагрузку на скрипт и посмотрите, ляжет ли серв, и не переполнится ли память.

    А о больших пхп файлах- один из методов оптимизации zend фрейворка- это копирование кода из всех файлов в один, который намного больше 400кб.
     
  6. rasandrey

    rasandrey

    Регистр.:
    2 апр 2009
    Сообщения:
    214
    Симпатии:
    6
    Этот файл - марки автомобилей. Изменяться он будет редко и для всех пользователей один. Предполагается покупка сервера. Как можно иметировать большую нагрузку для теста?
     
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
  8. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    кодировка полетела. не открывает. На всякий случай-

    http://highload.com.ua/index.php/2009/07/24/siege-—-утилита-для-нагрузочного-тестиров/
    Ещё есть
    httperf - довольно мощная штука
    Tsung
    apachebench
    Apache JMeter
    daiquiri
    curl-loader - одна из простейших, но курл сам по себе жрёт немало. Может и повалить серв.

    небольшая статейка
    http://tester-training.com.ua/Stat-...gruzochnogo-testirovaniya-veb-prilogeniy.html
     
    UDAV нравится это.
Статус темы:
Закрыта.