Используя PHP (не быстрый cgi) - как я могу предоставить таблицу поиска ~ 1000 элементов, которая отображает короткую строку в число для всех моих сценариев PHP? - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть каталог html, заполненный очень маленькими PHP-скриптами, которые ничего не делают, кроме преобразования параметров строки запроса в перенаправление.

Сервер apache, который принимает ~ 60 КБ запросов в день, не настроен с любым быстрым CGI / MOD CGI (я не уверен, что правильный термин здесь), и это не особенно сложная машина, поэтому я не решаюсь добавить значительные накладные расходы к логике в этих сценариях.

То, что я должен сделать, это ввести поиск в ассоциативный массив или эквивалентный ему, чтобы строку во входящем URL можно было сопоставить с числом (действительно строкой) в исходящем URL.

Я боюсь, что если я введу запрос MySQL для каждого запроса, я убью производительность.

Аналогичным образом, если я включу файл PHP, содержащий определение массива из 1000 элементов, я боюсь, что отсутствие какого-либо резидентного интерпретатора PHP будет вызывать аналогичную нагрузку.

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

Буду весьма признателен за любые мысли более опытного разработчика LAMP.

Возможные ответы:

  • скажите мне, что настраивать PHP, интегрированный в apache, нечего бояться, и дайте мне ссылку на некоторые инструкции
  • скажите мне, что запрос MySQL для каждого запроса незначителен
  • скажите мне, что включение определения большого массива в запрос на досягаемость незначительно затрачивается
  • ... какая-то другая идея ...

1 Ответ

2 голосов
/ 27 февраля 2012

Что если мы скажем вам «проверить это и посмотреть»?

Если у вас есть память, MySQL должен быть незначительным.Это сокетное попадание в кэш-память простого запроса.

Если у вас есть процессор, модуль PHP, скорее всего, не будет заметен.

Если у вас нет ни того, ни другого, вы обречены в любом случае:).

60 тыс. Запросов в день, в течение 8 часов, 2 транзакции в секунду.Это действительно не много трафика.Без сомнения, у вас есть шипы и тяжелые и тихие времена.Но даже все же.

Встраивание PHP в apache, в общем, ускорит процесс.Но не так сильно, как вы думаете.Стоимость запуска - это разветвление и создание процесса, но код интерпретатора PHP уже загружен в ОЗУ где-то еще (вероятно, если у вас есть перекрывающиеся запросы) или минимально в кеше диска.Так что это будет измеримо, не могу сказать, что это будет заметно.(Посыпьте "все зависит", как волшебная пыль, во всех этих утверждениях, верно?)

Проще говоря, если вы можете проверить это, я бы протестировал 1000 строк на карте php и посмотрел, как это происходит.,Для простого примера просто выделите его из командной строки (несколько раз) и посмотрите, в чем разница.Этот файл, скорее всего, будет оставаться горячим в файловом кеше, поэтому ввод / вывод будет минимальным, что возлагает большую часть бремени на синтаксический анализатор интерпретаторов PHP (и, следовательно, на ЦП).

Вы говорите, что у вас нетгрубая машина, так что я не знаю, что это значит, но современные "медленные" машины "довольно крутые (тм)".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...