- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть достаточно простая текстовая база, которой пользуется сайт. Упрощенная версия фрагмента скрипта, забирающего информацию из базы, приведена ниже.
$bases=file("base.txt"); #забираем базу в массив
foreach($bases as $In) #проходим по каждой строке базы
{
$In = trim($In);
$In = str_replace("\r","", $In);
$In = str_replace("\n","", $In);
list($id, $name, $birth, $ves, $adress) = explode("\t", $In); #разбираем строку
#далее присваиваем значения массивам
$ID[$id] = $id;
$NAME[$id] = $name;
$BIRTH[$id] = $birth;
$VES[$id] = $ves;
$ADRESS[$id] = $adress;
}
Выше приведена упрощенная версия базы. Все для того, чтобы далее можно было организовывать варианты поиска, к примеру по имени, адресу, дате рождения и пр.
Всё отлично работало, пока траффик был минимален и записей в базе несколько сотен. Сейчас в базе 3 тысячи записей и 70-90 тысяч запросов к этой базе в разных вариантах. Хостер ругается на нагрузку :(
Помогите, как можно вышеприведенную конструкцию изменить, чтобы ускорить и, соответственно, снизить нагрузку. Ранее SPLIT был заменен на EXPLODE, что ускорило работу скрипта. Может использовать другие методы чтения текстовой базы? Анализ показывает, что чем больше записывать элементов в массив, тем тормознее скрипт становится. Может формат записи
$NAME[$id] = $name; сменить на что то еще?
PS переход на MySQL прошу не предлагать. Пока в ней разобраться не смог :(
PS переход на MySQL прошу не предлагать. Пока в ней разобраться не смог
Так разберитесь, а мы поможем. База данных для этого и создана - чтобы хранить данные. Там не сложно.
P.S. 3 тысячи записей для базы - смех.
Replace your homegrown data layer to any SQL or even NoSQL database.
As a first step, you can move your file (base.txt) to the RAM drive (tmpfs, for example) and refactor it structure to avoid of parsing on each request. For example, by adding flag FILE_IGNORE_NEW_LINES to the file() function, you can avoid str_replace's of EOL and so on.
Стыдно просить, но по русски можно?
svv, sure:
https://translate.google.com/translate?sl=en&tl=ru&js=y&prev=_t&hl=ru&ie=UTF-8&u=http%3A%2F%2Fsearchengines.guru%2Fshowthread.php%3Fp%3D14733002%23post14733002&edit-text=
svv, sure:
https://translate.google.com/translate?sl=en&tl=ru&js=y&prev=_t&hl=ru&ie=UTF-8&u=http%3A%2F%2Fsearchengines.guru%2Fshowthread.php%3Fp%3D14733002%23post14733002&edit-text=
Спасибо :)
А как загонять базу в оперативку на обычном хостинге?
Как ее там обновлять?
Правильно я понимаю, что вышеуказанный фрагмент "ускорить" нельзя?
Попробуйте обработанную версию сохранить в JSON (json_encode) формат в файл. А далее уже брать готовый файл (file_get_contents и json_decode), где не нужен будет цикл.
memcached
Для чтения из файла строк луче использован fgets, fscanf
Если Вы можете хранить данные только в текстовом файле, а текстовый файл изменяется редко и загружается целиком в переменные.
Просто переводите в данные в php файл с переменными (массивы). Будет намного быстрее, чем загрузка из текстового файла в эти массивы.
Потом, загружайте инклудом.
Разумеется, для любой БД нужно всегда фильтровать данные, чтобы не подсунули что-то левое.
fgets, fscanf
Спасибо.
Разница есть, но она теряется на фоне этапа сохранения в массивы.
---------- Добавлено 19.10.2016 в 21:26 ----------
Если Вы можете хранить данные только в текстовом файле, а текстовый файл изменяется редко и загружается целиком в переменные.
Знатная идея. Завтра обязательно сравню. Действительно, это ж можно кроном регулярно формировать.
70-90 тысяч запросов к этой базе в разных вариантах.
Это что, количество посетителей сайта за сутки?