2015-02-10 15 views
1

我正在開發一個提供其他Web服務(使用JSON的簡單HTTP請求)的Symfony應用程序。 該服務檢查一些規則並在兩個MySQL表中插入少量行(只寫)。Symfony - 在數據庫不可用時記錄可運行的本地查詢

爲了優化原因,即使Doctrine包可用,我使用本機MySQL Query(帶有綁定參數)來插入這些行。

我的需求是:如果由於任何原因,數據庫不可用,請將「runnables」查詢寫入日誌文件。

最終的目的是當數據庫回來時,我希望能夠直接在數據庫上執行文件的內容。 請注意,沒有唯一約束(pk是生成的uuid),並且沒有要處理的鎖或事務(簡單插入語句)。

我寫了一個自定義的SQLLogger,但是當調用$connection->insert(...)時,調用logger之前的連接失敗。

所以,我的問題是:有沒有辦法獲得最終查詢(綁定參數)沒有數據庫連接?

或者當數據庫不可用時,我應該重寫將params綁定到查詢中並自行記錄它的mecanism?

最好的問候,

朱利安

回答

0

與參數的最終查詢是由數據庫建立,就是沒有辦法建立查詢使用PHP和要保證下,該查詢將是與數據庫相同。

構建不帶綁定參數的查詢的唯一方法,但這顯然不是一個好的做法。

因此,如果數據庫不可用,我最終決定將所有JSON(API請求正文)存儲在文件中。

所以,當數據庫回來,而不是重播SQL查詢,我可以重播原始的HTTP查詢。

希望這個晚期的自我幫助會幫助別人。

此致敬禮。

相關問題