2013-02-21 58 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您想要的嗎? – 2013-02-21 08:32:44

+0

嗯,我想。我是新來的API,所以不太清楚。由於我正在對腳本進行計時,所以我不想過早開始計時,並且我認爲在腳本執行前有一段時間調用了RINIT。不過謝謝你的回答!我會給它一個鏡頭。但是函數鉤子呢? – DavidS 2013-02-21 08:37:01

+0

任何代碼示例都會很好,甚至是僞代碼。 – Black 2016-04-20 09:56:44

回答

0

我很確定,php沒有擴展函數的鉤子! 您可以在擴展中設置的唯一鉤子是在Apache(MINIT)中第一次加載擴展時以及服務器(RINIT)收到請求時。我可能用某種方式替換一個函數(我前面已經閱讀過某個地方可以替換zend引擎的解析,編譯等功能)。

ps:你可能也想看看xdebug,我非常確定擴展會執行一些時序/分析,你可以看看它是如何完成的!