Htaccess: запуск php или запись в лог - PullRequest
2 голосов
/ 22 июля 2011

Я хочу, чтобы редирект был максимально быстрым. Поэтому я решил использовать перенаправление htaccess, потому что оно отвечает даже до инициализации интерпретатора php. Но я хочу регистрировать перенаправления и записывать что-то в базу данных.

Я попытался перенаправить и вызвать rewritemap только для запуска php-файла, но он выдает только ошибку 500.

Я был бы в порядке, если бы я мог создать файл журнала, даже если обработка журнала будет отложена. Важно только: быстрое перенаправление, отслеживание / запись перенаправления.

У вас есть идеи или рекомендации по этому поводу?

спасибо заранее

всего наилучшего,

Эмре

Ответы [ 4 ]

2 голосов
/ 22 июля 2011

Вы можете использовать RewriteLog для записи действий перезаписи в файл - это будет сделано Apache, без вызова PHP.

=> Довольно быстро; но регистрирует только файл, а не базу данных; тем не менее, как вы сказали, обработка журнала может быть отложена и выполнена с помощью скрипта, запускаемого из crontab.


См. Также RewriteLogLevel, чтобы настроить, насколько подробным должен быть этот журнал.

1 голос
/ 22 июля 2011

Если ваша цель состоит в том, чтобы максимально быстро работать с журналированием, то основная проблема заключается в том, чтобы минимизировать дисковый ввод-вывод.Полагаясь на .htaccess, вы выполняете сканирование каталогов на каждом уровне URL (http://muffinresearch.co.uk/archives/2008/04/07/avoiding-the-use-of-htaccess-for-performance/).

. Если вы можете настроить RewriteRule в конфигурации Apache и указать ваши перенаправления на файл PHP, то вы можете запустить PHPс APC и выполнением регистрации в объекте memcache. Таким образом, весь доступ вашего клиента может происходить исключительно в оперативной памяти, и вы могли бы иметь задание cron, которое обычно извлекало бы данные из memcache и передавало их вбазы данных (таким образом, у вас все еще будет долговременное хранилище, но доступ клиента никогда не должен требовать чтения диска.)

Очевидно, что если вы гибко относитесь к базе данных, вы можете использовать стиль Couchbaseрешение, которое, по сути, позволило бы вам быстро записывать в memcache, не сохраняя информацию в энергозависимой памяти, но я предполагаю, что вы заблокированы в базе данных, которую вы используете в настоящее время.

1 голос
/ 22 июля 2011

Может использоваться в конфигурации apache / vhost, но не в .htaccess (поэтому, если вы можете поместить его туда, не забудьте перезагрузить apache):

    RewriteEngine On
    RewriteRule /foo http://www.example.com [R=301,E=redirected]

    CustomLog /path/to/log combined env=redirected

'комбинированный' - это формат журнала по умолчанию,но вы можете определить свой собственный

0 голосов
/ 22 июля 2011

Возможно, вы захотите попробовать журнал apache в модуле mysql, например: http://www.outoforder.cc/projects/apache/mod_log_sql/, вот инструкция для debian http://www.howtoforge.com/apache2-logging-to-a-mysql-database-with-mod_log_sql-on-debian-etch

Однако я не уверен на 100%, что это работает с последней версиейapache.

Удачи

...