2012-04-13 8 views
2

Ich arbeite an einer PHP/CodeIgniter Web-App, die das Backend für ein Nicht-Echtzeit-Spiel sein wird. Wir möchten, dass die Spielaktivität für eine spätere Analyse aufgezeichnet werden kann. In meinen Leistungstests, die entweder das eigene Logging-System oder log4php verwenden, scheint die Dateiprotokollierung langsam zu sein, was die Anzahl der Anfragen pro Sekunde, die der Server bewältigen kann, um 50% reduziert. Ich habe es sowohl auf einem WAMP-Rechner als auch auf einem Apache/Ubuntu-Server ausprobiert. Wenn ich die Protokollierung für die Verwendung von MongoDB ändere, sinkt die Leistung nur um ein paar Prozent, selbst wenn ich die gleiche Menge an Informationen protokolliere.Effizienz der Anmeldung in PHP?

Wird die Dateiprotokollierung für PHP-Skripts langsam sein, weil sie alle auf Sperren für die gleiche Datei warten oder ist es wahrscheinlich ein Konfigurationsproblem?

+0

Ich bin ein wenig überrascht, dass performance * fiel *, wenn Sie zu MongoDB wechselte. Die einzige Möglichkeit, Dateien schneller zu machen, ist, wenn Sie nur an sie anhängen. Aber was wirst du mit diesen Logs machen? Es könnte besser sein, nur eine Datenbank zu verwenden. – NullUserException

+1

Denken Sie daran, dass Ihre Protokollierung genauso wichtig sein kann, wie Sie sie protokollieren. Wenn Sie dies noch nicht getan haben, sollten Sie die Ausführlichkeit Ihrer Protokollinformationen reduzieren. Es kann sich sogar lohnen, Aktions-IDs zu verwenden und sie später zu dekodieren. –

+0

Was loggen Sie und wie groß ist es? Ich würde es kaum glauben, dass es r/s um 50% töten würde ... Können Sie nicht error_log verwenden und eine Zielprotokolldatei angeben? Sie können wirklich nicht viel schneller als die sapi-Funktionen. – Aknosis

Antwort

0

Sie können versuchen, RAM-Laufwerksdatei (en) einzuloggen. Berücksichtigen Sie auch die Benennung der Protokolle anhand eines Datumsstempels wie YYYY-mm-dd-HH.log, damit Sie in regelmäßigen Abständen ältere Protokolle aufnehmen und diese archivieren und archivieren können. Das Laufwerk bleibt sauber.