使用PHP的網站具有非常大的流量,例如每秒5000個請求。每個請求都嘗試將數據記錄到單個文件。由於在任何時間點,只有一個請求可以寫入文件,另一個請求會排隊等候影響總體響應時間。數據需要記錄,這很重要。我怎樣才能優化這種情況。如何優化多個進程嘗試寫入同一個日誌文件的過程
2
A
回答
0
我看到兩個選項。
由於您的要求是寫入一個大型日誌文件,而沒有其他地方。您可以讓PHP腳本首先將這些條目記錄到隊列中。有許多消息隊列平臺可以使用,比如RabbitMQ或ActiveMQ。假設這些日誌條目不是大型有效負載,那麼您的用戶請求導致進入日誌的結果可以被指示將消息插入到隊列中。你將會有另一個後端進程(可能是一個php腳本?),它將簡單地監聽隊列並不斷寫入日誌文件。以下是有關客戶端如何使用隊列消息的詳細解釋(https://www.rabbitmq.com/tutorials/tutorial-one-php.html)
您還可以使用類似Apache Log4php這種使用文件附加機制的日誌記錄框架。您只需調用一個方法即可輕鬆地將重要信息推送給您。
$ logger-> info(「這是要記錄的信息。」);
他們應該處理多個請求登錄到同一文件的複雜性。你甚至可以讓他們在一天之內分解這些文件等。
希望這有助於!
相關問題
- 1. 當多個進程嘗試寫入同一個文件時會發生什麼?
- 2. 如何從同一個python程序寫入兩個單獨的日誌文件?
- 3. Rails logger rotation =>其他進程可以寫入同一個日誌文件嗎?
- 4. Boost.Log - 多個進程到一個日誌文件?
- 5. python日誌記錄:多個處理程序如何寫入一個動態日誌文件
- 6. 兩個進程打開同一個文件進行寫入
- 7. Log4Net從多個進程寫入文件
- 8. 如何使R foreach線程寫入相同的日誌文件
- 9. 併發寫入日誌文件與來自多個進程的pantheios
- 10. log4net,可以將2個應用程序寫入同一個日誌文件嗎?
- 11. 如何解析由多個線程寫入的日誌?
- 12. 寫一個日誌文件
- 13. 多個java進程如何共享一個滾動日誌文件
- 14. 如何在一個日誌文件中寫入2個或多個java項目
- 15. Python日誌記錄無法寫入多個日誌文件
- 16. 多個進程寫入相同的文件(.net/c#)
- 17. 寫入相同log4j日誌文件的不同應用程序
- 18. 如何對同一個文件進行多次寫入。 [JAVA]
- 19. MySQL多個進程寫入
- 20. 多個RollingFileAppenders寫入同一個文件
- 21. 讀取/寫入同一文件的兩個進程Python
- 22. 將日誌文件寫入每個線程的html
- 23. hadoop/HDFS:是否可以從多個進程寫入同一個文件?
- 24. 如何同步 - 使原子 - 從兩個進程寫入一個文件?
- 25. 寫事件日誌不寫入應用程序日誌(註冊優先源後)
- 26. PowerShell - 幾個進程更新相同的日誌文件
- 27. 在同一文本文件上寫入Java多個程序
- 28. foreverjs不會將子進程的console.log寫入日誌文件
- 29. Java - 寫入同一文件的多個線程
- 30. Hadoop - 當多個進程試圖同時寫入同一個文件時會發生什麼?
您可以登錄到數據庫,然後有一個函數來處理數據表到日誌文件? – Cricket
您可以爲每個用戶(或日誌條目)創建臨時文本文件並按特定間隔合併文件。或者編寫一個文件管理器/包裝器來創建一個文件,添加日誌條目並將其排在後臺的主文件條目中。 – Nitin
@Cricket將日誌寫入數據庫對於每個請求都不是一個好主意。不能說性能不是基準測試。 – user3107673