2016-08-01 36 views
2

使用PHP的網站具有非常大的流量,例如每秒5000個請求。每個請求都嘗試將數據記錄到單個文件。由於在任何時間點,只有一個請求可以寫入文件,另一個請求會排隊等候影響總體響應時間。數據需要記錄,這很重要。我怎樣才能優化這種情況。如何優化多個進程嘗試寫入同一個日誌文件的過程

+0

您可以登錄到數據庫,然後有一個函數來處理數據表到日誌文件? – Cricket

+0

您可以爲每個用戶(或日誌條目)創建臨時文本文件並按特定間隔合併文件。或者編寫一個文件管理器/包裝器來創建一個文件,添加日誌條目並將其排在後臺的主文件條目中。 – Nitin

+0

@Cricket將日誌寫入數據庫對於每個請求都不是一個好主意。不能說性能不是基準測試。 – user3107673

回答

0

我看到兩個選項。

  1. 由於您的要求是寫入一個大型日誌文件,而沒有其他地方。您可以讓PHP腳本首先將這些條目記錄到隊列中。有許多消息隊列平臺可以使用,比如RabbitMQ或ActiveMQ。假設這些日誌條目不是大型有效負載,那麼您的用戶請求導致進入日誌的結果可以被指示將消息插入到隊列中。你將會有另一個後端進程(可能是一個php腳本?),它將簡單地監聽隊列並不斷寫入日誌文件。以下是有關客戶端如何使用隊列消息的詳細解釋(https://www.rabbitmq.com/tutorials/tutorial-one-php.html

  2. 您還可以使用類似Apache Log4php這種使用文件附加機制的日誌記錄框架。您只需調用一個方法即可輕鬆地將重要信息推送給您。

    $ logger-> info(「這是要記錄的信息。」);

他們應該處理多個請求登錄到同一文件的複雜性。你甚至可以讓他們在一天之內分解這些文件等。

希望這有助於!

相關問題