Ich arbeite an der Optimierung meiner Website, und ich habe die langsamen MySQL-Abfragen seit ein paar Tagen angemeldet, aber nachdem ich> 260M Abfragen durchlaufen hatte, protokollierte es nur 6 langsame Abfragen, und diese waren spezielle von mir ausgeführt phpMyAdmin. Ich frage mich, ob es etwas gibt, um die Ausführungszeit der langsamen PHP-Seite zu protokollieren, so dass ich bestimmte Seiten finden kann, die Ressourcen hoggen, anstatt spezifische Abfragen.PHP entspricht dem langsamen Abfrageprotokoll von MySQL?
Antwort
Zuerst gibt es xdebug, die einen Profiler hat, aber ich würde das nicht auf einer Produktionsmaschine verwenden, da es Code eingibt und die Geschwindigkeit zu einem Crawl bringt. Sehr gut für Testumgebungen.
Wenn Sie Geschwindigkeiten in einer produktiven Umgebung messen möchten, würde ich nur die Messung manuell durchführen. microtime()
ist die Funktion für diese Dinge in PHP. Vorausgesetzt Sie haben eine header.php und eine footer.php, die von alle PHP-Skripte aufgerufen:
# In your header.php (or tpl)
$GLOBALS['_execution_start'] = microtime(true);
# In your footer.php (or tpl)
file_put_contents(
'/tmp/my_profiling_results.txt',
microtime(true) - $GLOBALS['_execution_start'] . ':' . print_r($_SERVER, true) . "\n",
FILE_APPEND
);
Danke, Ihr zweiter Vorschlag ist eine gute Idee. Ich hatte gehofft, dass es einen Weg geben würde, das zu automatisieren, aber das funktioniert ohne viel Aufwand genauso gut. –
Oh, eine Sache hinzuzufügen. FILE_APPEND sollte als Flag hinzugefügt werden, damit Sie nicht nur den letzten Zugriff im Protokoll erhalten. –
Thx, das vergesse ich immer :) – soulmerge
Sie könnten Ihre Skripte in einem einfachen Timer wickeln, wie folgt aus:
/*in your header or at the top of the page*/
$time_start = microtime(true);
/* your script goes here */
/*in your footer, or at the bottom of the page*/
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "It took $time seconds\n";
Beachten Sie, dass zwei Funktionsabläufe und ein winziges bisschen Mathe als Kopf hinzufügen.
Könnten Sie nicht eine Shutdown-Funktion registrieren, die ein Ende der Timer ruft? http://us3.php.net/register_shutdown_function Auf diese Weise müssen Sie den Timer nur starten, wenn Sie der Meinung sind, dass ein Problem vorliegt.
was auto_prepend_file und auto_append_file, schrieb nur einen Beitrag darüber http://blog.xrado.si/post/php-slow-log
ist das der richtige Beitrag? http://blog.xrado.si/post/php-slow-log –
ja, ich habe eine neue Domain – xrado
Wenn Sie FastCGI verwenden für Ihre PHP-Skripte ausführen Sie die FastCGI Process Manager verwenden können (FPM, php-fpm), die auch ein unterstützt sogenanntes "Slowlog".
Sie können es in der PHP-Konfiguration von Ihrem php-fpm aktivieren (für debian ist dies in /etc/php5/fpm/pool.d/www.conf
) mit den Konfigurationsoptionen: request_slowlog_timeout und langsamlog.
request_slowlog_timeout
Der Timeout für eine einzige Anforderung dient, nach der ein PHP Backtrace wird auf die ‚slowlog‘ Datei ausgegeben werden. Ein Wert von '0' bedeutet 'Aus'. Verfügbare Einheiten: s (econds) (Standard), m (inutes), h (ours) oder d (ays). Standardwert: 0.
slowlog
Die Log-Datei für langsame Anfragen. Standardwert: # INSTALL_PREFIX #/log/php-fpm.log.slow.
von http://php.net/manual/en/install.fpm.configuration.php
Siehe auch: http://php.net/manual/en/install.fpm.php und http://rtcamp.com/tutorials/php/fpm-slow-log/
- 1. Mysql Abfrageprotokoll funktioniert nicht
- 2. rotierende MySQL langsam Abfrageprotokoll
- 3. MySQL langsames Abfrageprotokoll Protokollierung schneller Abfragen
- 4. Position des langsamen MySQL-Abfrageprotokolls über PHP abrufen
- 5. MySQL langsam Abfrageprotokoll - wie langsam ist langsam?
- 6. Wie aktiviere ich das langsame Abfrageprotokoll von MySQL?
- 7. MySQL - Verbesserung der Leistung einer langsamen Unterabfrage
- 8. MySQL entspricht dem PostgreSQL-Modul dblink?
- 9. MySQL String-Funktion entspricht PHP ucwords() Funktion
- 10. Was entspricht dem InfiniteIterator von PHP in .NET?
- 11. Wie kann ich das langsame Abfrageprotokoll von MySQL aktivieren, ohne MySQL neu zu starten?
- 12. PHP: Mehrere MySQL-Verbindungen zur selben Datenbank simulieren
- 13. cqlsh entspricht mysql -e
- 14. Single entspricht in MYSQL
- 15. MySQL "IS IN" entspricht?
- 16. MySQL regulären Ausdruck entspricht
- 17. Javascript Entspricht PHP Explode()
- 18. Was entspricht REGEXP_SUBSTR in mysql?
- 19. Mysql Reihenfolge von Feld entspricht in Hibernate
- 20. Ersetzen Abfragen im mysql Abfrageprotokoll, aber keine Datensätze tatsächlich in Tabelle angezeigt
- 21. RVM entspricht für PHP?
- 22. PHP: Entspricht umfassen eval
- 23. Debuggen langsamen App-Start
- 24. Python entspricht "php -s"
- 25. cURL zu PHP entspricht
- 26. PHP entspricht Python's enumerate()?
- 27. Autotest entspricht für PHP?
- 28. Vim entspricht dem offenen Rechteck von Emacs
- 29. wifstream entspricht dem "mode" -Parameter von _wfopen?
- 30. DB2 entspricht dem GO von SQL?
Es könnte sein, dass phpMyAdmin Abfragen niedrige Priorität sind, dass sie als ‚langsam‘ zu zeigen, würde dazu führen, – karim79
Ich war nur, dass zu erwähnen, zu sagen, Das waren keine Abfragen, die auf der Website optimiert werden mussten. –
Wenn Sie genauere Messungen als in der akzeptierten Antwort wünschen, um zu finden, wo in einem Dokument Ihr Engpass ist - können Sie Benchmark von PEAR überprüfen. Sie können Markierungen in Ihrem Code festlegen, um die Flaschenhälse zu finden. –