Подсчет количества запущенных запросов файлов - PullRequest
0 голосов
/ 08 декабря 2010

Возможно ли с помощью PHP (5) или других инструментов Linux на веб-сервере apache debian получить файл, запрашивающий один http-запрос?по соображениям производительности я хотел бы сравнить их с кэшированной «версией» моего приложения для торта.

без кэширования, которое в некоторых представлениях может превышать 100.кэшируется только до 10 (надеюсь).

afaik есть 3 основных функции файла: file_get_contents (), file () и fopen () вручную, и т.д.

, но я не могу их переопределить, поэтому яне может поместить в них функцию logRequest ().Есть ли другой путь?прикрепление обратных вызовов к функциям?перехватывает запросы файлов?

Ответы [ 5 ]

2 голосов
/ 08 декабря 2010

Это предложение не кажется интуитивно понятным, но вы можете взглянуть на xdebug - функция trace

После того, как xdebug установлен и включен, вы можете использовать любые конфигурации для сохраненияпрофилирование в файл на диске, и вы можете получить его позже.Например, результаты профилирования для сохранения различных URL-адресов в другой файл на диске.

Для мониторинга функций, связанных с файловой системой, вы можете выполнить синтаксический анализ текстового файла (результаты профилирования) и подсчитать соответствующие функции (программируемые или вручную).)

1 голос
/ 08 декабря 2010

Вы можете использовать Xdebug для регистрации всех вызовов функций

Эти так называемые «следы функций» могут помочь, когда вы новичок в приложении или когда вы пытаетесь выяснить, что именно происходит во время работы приложения. Трассировки функций могут также показывать значения переменных, переданных в функции и методы, а также возвращаемые значения. В трассировках по умолчанию эти два элемента недоступны.

0 голосов
/ 08 декабря 2010

Существует расширение pecl под названием ADB (Advanced PHP Debugger), в котором есть функции буксировки, которые были бы очень полезны для cse, таких как override_function () и rename_function (). Вы могли бы сделать что-то вроде этого:

rename_function('file_get_contents', 'file_get_contents_orig');

function file_get_contents($filename) {
    logRequest();
    return file_get_contents_orig($filename);
}

Похоже, ADB тоже довольно прост в установке.

См. http://www.php.net/manual/en/book.apd.php

0 голосов
/ 08 декабря 2010

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

function custom_file_get_contents($filename) {
    $GLOBALS['file_get_contents_count']++;
    return file_get_contents($filename);
}

И просто замените все ваши вызовы file_get_contents на custom_file_get_contents.Это просто элементарный пример, но вы поняли идею.

Примечание: если вы хотите подсчитать, сколько файлов ваш скрипт включил (или потребовал), см. get_included_files ()

0 голосов
/ 08 декабря 2010

Интересный вопрос. Я бы начал с stream_wrapper ... попробую заменить их на пользовательские классы.

...