2013-04-17 10 views
6

Ich habe eine php 5.4/mysql Website mit 5 Millionen Zugriffe pro Tag, läuft auf einem Linux-Server mit nginx und php-fpm. Die Datenbank befindet sich auf einem separaten Server.Jeder Weg, um htmlspecialchars() CPU-Nutzung zu reduzieren?

Ich habe bemerkt, dass zu Spitzenzeiten meine Webserver-Auslastung bis zu 15 statt 4 für Quad-Core-Prozessor beträgt. Ich habe meine PHP-Anwendung mit xdebug und xhprof profiliert, und sah, dass 90% der CPU-Arbeit von htmlspecialchars() Funktion in Twig Vorlagen, die ich verwendet, um Daten anzuzeigen getan wird. Es gibt manchmal von 100 bis 1000 htmlspecialchars() Anrufe pro Seite. Ich habe versucht, das unnötige Entweichen zu reduzieren, aber es kann trotzdem nicht vermieden werden.

Gibt es eine Möglichkeit, die CPU-Auslastung durch htmlspecialchars() Funktion zu reduzieren? Vielleicht gibt es dafür eine Art Cache in PHP? Oder gibt es da einen anderen Weg?

+1

Wenn Sie so viele Daten entkommen, vielleicht ist es besser zu speichern es bereits entkommen? –

+0

@Artjom Kurapov, die meisten Daten werden von Benutzern hinzugefügt. Um sie bearbeiten zu lassen, müsste ich sie entschlüsseln und dann wieder entkommen, was ein echter Schmerz wäre. Das ist nur einer der Fälle ... –

+0

Wenn Sie nur wenig CPU-Kapazität, aber keinen Speicherplatz haben, können Sie es sowohl als Escape- als auch als Unescaped-Objekt speichern. Einmal entkommen, wenn es aktualisiert wird, und wenn der Benutzer bearbeiten möchte, verwenden Sie das Original. Dies ist etwas, das ich mit Markdown verwendet habe und ich war mit den Ergebnissen zufrieden. – Maerlyn

Antwort

1

Verwenden Sie nicht Zweig. Verwenden Sie einfach PHP-Dateien mit diesem Code:

+0

Bedingte Anweisungen? Schleifen? –

+0

Machen Sie sie mit PHP-Inline-Tags – Gustav