2011-07-21 5 views
2

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

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

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

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

спасибо в авансовый

все лучшее,

Эмре

ответ

2

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

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


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

1

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

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

    CustomLog /path/to/log combined env=redirected 

'комбинированный' является формат журнала по умолчанию, но вы можете define your own

+0

+1, это самое приятное решение, мне нравится журнал apache в среде var для регистрации только при применении правила. И, конечно же, самый быстрый. удаление использования файлов .htaccess сделает apache быстрее, пользователь хочет скорейшего перенаправления, используя AllowOverride None для удаления .htaccess чтения и использования правил в обычных файлах apache позволит избежать много времени выполнения ввода-вывода для файлов конфигурации для каждого каталога. – regilero

1

Если ваша цель проста в записи при регистрации, то основной проблемой является сохранение дискового ввода-вывода до минимума. Опираясь на .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 без сохранения информацию в энергозависимой памяти, но я предполагаю, что вы заблокированы в используемой вами базе данных.

Смежные вопросы