Поиск в массиве или в базе.

Beckie

Новичок
Поиск в массиве или в базе.

Есть:

- массив с 1000 слов(написанный вручную)
- таблица с проиндексированной колонкой, содержащей эти же 1000 слов

Будет происходить постоянный поиск в этих данных на определенное слово.

Что с точки зрения нагрузки на сервер и скорости выполнения будет лучше?
 

Beckie

Новичок
Столько, сколько и посещений. Просто не хочу привязывать эту операцию к базе.

Вообще по сомнением эти переделанные url с помощью php, но с регулярными выражениями туго. :rolleyes:

У меня url делится с помощью php и куски проверяются через метод, который в свою очередь вытаскивает в массив список разрешенных названий и, если false, to перенаправляет 404 page.
Все запросы отправляются на index.php , где и обрабатываются.
Странички вставляются через include_once там же.

Не знаю, насколько это правильно, но пока работает отлично. Возможно стоит пересмотреть структуру сайта? :rolleyes:

И кстати начал делать такой же массив для языков в отдельном файле. Это нормально или есть другие способы?

Заранее спасибо за советы! Ценю ваши ответы.
 

Beckie

Новичок
допустим url www.domain.ru/bla/bla2/bla3/bla4

url делим

- bla
- bla2
- bla3
- bla4

проверяем, существуют ли эти bla,bla2,bla3,bla4 в созданном мною массиве и если выдает true, то вставляем уже нужную страницу в index.php

если false, то вставляем 404.php

-~{}~ 02.09.09 16:55:

Автор оригинала: *****
структура ужасная
:( так и чувствовал

Тогда лучше от всего этого избавится и сесть усерднее учить регулярные выражения?
Кстати чем чревата текущая структура, во всех планах?
 

Фанат

oncle terrible
Команда форума
нет. не структура разбора адреса.
а структура сайта, который состоит из тысячи инклюдов
 

Beckie

Новичок
нет нет, инклюдов мало
там OOP по большей части

на данный момент, каждая категория имеет свой индификатор, исходя из этого индификатора и строится запрос таблицы

страницы по пальцам можно пересчитать

так стоит ли перейти на регулярные или всё же можно что-то где-то подкрутить и всё в шоколаде будет? :D
 

Фанат

oncle terrible
Команда форума
а почему тогда весь адрес разбирает индекс, а не модуль?
 

Beckie

Новичок
Автор оригинала: dimagolov
Beckie, что у тебя обозначает термин "вставляем" ("уже нужную страницу в index.php" или "404.php")?

http://ru.wikipedia.org/wiki/ЧПУ_(Интернет)
в index.php include_once(404.php);exit();

-~{}~ 02.09.09 17:13:

Автор оригинала: *****
а почему тогда весь адрес разбирает индекс, а не модуль?
$p = $_SERVER['REQUEST_URI'];
$p = explode("/", $p);

Ну чтобы перед всеми другими операциями проверить, может и не стоит ничего, кроме 404 вставлять.

Может не совсем вас понял. :rolleyes:

Меня в данной структуре смущает, только один фактор. Прямые ссылки на php файлы. Как от этого защититься. Обработчики то ладно, там еще есть к чему приципиться.

Переменные в index.php, прям перед include создавать может? А в вставляемом файле уже проверять, существует или нет?

Или есть лучше решения для таких задач?
 

Фанат

oncle terrible
Команда форума
да че уж мелочиться. написать весь код и все выдаваемые данные в index.php
и никаких забот с инклюдами и прямыми обращениями
 

Beckie

Новичок
Автор оригинала: *****
да че уж мелочиться. написать весь код и все выдаваемые данные в index.php
и никаких забот с инклюдами и прямыми обращениями
Ну вот, теперь издеваетесь. :(

Сама по себе страничка index.php весит 1kb, остальную работу выполняют классы.

Разве index.php, после нового запроса не начинает с нуля? Те данные, что были, ведь убираются и процесс происходит с чистого листа или я ошибаюсь?

Получается index.php что-то типа посредника. Пока что всего 4 страницы, которые обрабатывают все данные из базы.

Я просто не опытен в сайтостроени. Пожалуйста подскажите, что я делаю не так.

Вообще это мой первый сайт на OOP и второй вообще.
 

Фанат

oncle terrible
Команда форума
с нуля.
но зато ведь устраняется страшная ужасная опасность прямого обращения к файлам!
 

Beckie

Новичок
Автор оригинала: *****
с нуля.
но зато ведь устраняется страшная ужасная опасность прямого обращения к файлам!
Чего я и опасаюсь. Никаких методов борьбы нету?

Разве выдавать переменную или даже переменную с определенным значением и проверять её уже при попытке подключиться напрямую к файлу не вариант? Можно подключить sha1. :rolleyes:

То есть, если переменная не существует, значит запрос не был выполнен через index.php , а в конце вывода include, удалять переменную или её содержимое.

Ну или даже отдавать методу private на проверку.

Соответственно, если переменной нет, то redirect на 404 и exit();
 

Фанат

oncle terrible
Команда форума
от одного прямого обращения к файлу умирает сайт, от двух - сервер, а от трех - датацентр.
 

Beckie

Новичок
Автор оригинала: *****
от одного прямого обращения к файлу умирает сайт, от двух - сервер, а от трех - датацентр.
То есть тут дело в спаме. В итоге огромные затраты на вычисления, той же самой переменной. Я правильно вас понял?
 

Фанат

oncle terrible
Команда форума
чего вы все так боитесь этих прямых обращений?
 

dimagolov

Новичок
Beckie, ты кстати в курсе, что в 404 надо делать отправку заголовка с 404 кодом?

по поводу прямого обращения. самое простое, это выкладывать код вне DOCUMENT_ROOT.
 

Beckie

Новичок
Автор оригинала: *****
чего вы все так боитесь этих прямых обращений?
Ну я не знаю, вы тут специалист, а я лишь новичек. Сайт не приходилось взламывать, ну или хотябы наблюдать разбор логов падения серверов.

-~{}~ 02.09.09 17:56:

Автор оригинала: dimagolov
Beckie, ты кстати в курсе, что в 404 надо делать отправку заголовка с 404 кодом?

по поводу прямого обращения. самое простое, это выкладывать код вне DOCUMENT_ROOT.
То есть в папку и папку защитить с помощью chmod? Какой там chmod параметр для папки будет в цифрах?
Содержимое 404.php у меня тоже вставляется, редиректа, как такового нету на всем сайте.

Кстати я тут вспомнил одну вещь с css, что можно css держать в php файле, а header указывать, как css.
В итоге css можно вставлять по частям с помощью GET на каждой странице.

Только вот меня мучает один вопрос. Ведь, если обычный css разом разгузить, то он будет в кэше, а так увеличивается количество запросов к серверу.
Первый сильно уменьшит css файл при скачивании, а обычный метод уменьшит количество запросов и может что-то еще....

Так какой подход всетаки лучше?

Кстати, как ограничить количество refresh на одной странице в минуту допустим. Это ведь тоже лишняя нагрузка на сервер или нет?
Ведь вредные действия клиента можно как-то контролировать или нет?
Как со сменой пароля допустим.

-~{}~ 02.09.09 21:43:

Извиняюсь, что забираю ваше драгоценное время.

Пока буду придерживаться сказанных советов.

Жду ваших ответов. ;)
 
Сверху