2013-02-21 4 views
1

Я пишу очень простой таймер-расширение в PHP, и мне интересно, как:Крюка в выполнение скриптов

  • крюка в режим исполнения/получить функцию моего расширения будет вызываться, когда сценарий начало/конец запуска
  • Подключить к определенным функциям, например, Pdo :: query() в начале и в конце.

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

  1. auto_prepend_file/auto_append_file
  2. Использование extension, что позволяет мне подключаться к функциям (началу).

Но меня больше всего интересуют решения C/C++ (в PHP/Zend API). Возможно, есть даже лучший способ сделать то, что я хочу?

+1

Итак, интерфейс оболочки PHP уже написан (MINIT, RINIT ...)? Вам нужен метод для обработки запросов - не RINIT, RSHUTDOWN, что вы хотите? –

+0

Ну, я думаю. Я новичок в API, поэтому не совсем знаю. Поскольку я использую сценарии, я не хочу начинать отсчет слишком рано, и я думал, что RINIT был вызван некоторое время до выполнения скрипта. Спасибо за ваш ответ, хотя! Я сделаю это. Но как насчет функциональных крючков? – DavidS

+0

Любые примеры кода были бы хорошими, даже псевдокодами. – Black

ответ

0

Я уверен, что php не имеет крючков для функций в расширениях! Единственные крючки, которые вы можете установить в расширении, - это когда расширение загружается в первый раз в apache (MINIT) и каждый раз, когда запрос получает сервер (RINIT).

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

ps: вы также можете взглянуть на xdebug, я уверен, что расширение делает некоторое время/профилирование, вы можете посмотреть, как это делается там!

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