2011-01-15 5 views
1

Ich muss einen Weg finden, um alle Apache laufende Anfrage zu einem bestimmten Zeitpunkt zu erhalten. Ich muss die vhost, CPU, Anfrage IP-Adresse und einige andere Informationen auflisten. Diese Information wird von einem PHP-Skript verbraucht.Wie erhalte ich die laufende Anfrage von Apache zu einem bestimmten Zeitpunkt?

Ich habe mod_status installiert und es hat alle Informationen, die ich brauche. Also habe ich versucht, file_get_contents zu verwenden, um den Bericht zu erhalten, indem ich eine Anfrage vom Server generiere (http: // localhost/server-status). Es hat perfekt funktioniert. Dann habe ich versucht, den Bericht zu analysieren, indem ich ihn mit simplexml_load_string in XML umwandelte. Das Problem ist, dass der von mod_status ausgegebene HTML-Code nicht gut gebildet ist. Hier

ist die HTL aus der Tabelle Ich muss analysieren:

<table border="0"><tr><th>Srv</th><th>PID</th><th>Acc</th><th>M</th><th>CPU 
</th><th>SS</th><th>Req</th><th>Conn</th><th>Child</th><th>Slot</th><th>Client</th><th>VHost</th><th>Request</th></tr> 

<tr><td><b>0-1</b></td><td>-</td><td>0/0/70</td><td>. 
</td><td>0.00</td><td>107</td><td>0</td><td>0.0</td><td>0.00</td><td>0.34 
</td><td>127.0.0.1</td><td nowrap>zsce</td><td nowrap>OPTIONS * HTTP/1.0</td></tr> 

<tr><td><b>1-1</b></td><td>-</td><td>0/0/55</td><td>. 
</td><td>0.04</td><td>108</td><td>0</td><td>0.0</td><td>0.00</td><td>0.70 
</td><td>127.0.0.1</td><td nowrap>zsce</td><td nowrap>OPTIONS * HTTP/1.0</td></tr> 

</table> 

Ich bin sicher, dass jemand versucht hat, bevor so etwas zu tun. 1) Gibt es eine andere Möglichkeit, auf die Informationen zuzugreifen, die ich brauche? 2) Hat jemand andere Werkzeuge/Module ausprobiert?

Vielen Dank im Voraus.

Antwort

0

Ich fand nur, dass, wenn ich „nowrap“ aus dem HTML zu entfernen, bevor es das Parsen, es funktioniert .

2

Ich kann das Problem mit dem HTML nicht sehen. Was stimmt damit nicht?

Hat PHP keinen liberalen HTML-Parser; etwas wie Pythons BeautifulSoup oder Rubys Nokogiri?

Denken Sie auch daran, dass mod_status den Modus 'auto' zum Erstellen von maschinenlesbaren Ausgaben hat.

http://www.apache.org/server-status?auto http://httpd.apache.org/docs/2.2/mod/mod_status.html#machinereadable

+0

danke für Ihre Antwort. Der Fehler, den ich in PHP bekomme, ist: "E: Spezifikationsmandatwert für Attribut nowlerrap." weil die Werte am Ende jeder Zeile der Tabelle nicht durch ein Tag geschlossen sind. Ich werde die maschinenlesbare Ausgabe prüfen. tks. – oscarm

+0

Ich bin sehr überrascht, solch einen strengen Fehler von Ihrem Parser zu sehen. Dieser HTML-Code, wie er von mod_status erzeugt wird, ist wahrscheinlich ziemlich altmodisch (vielleicht html3), aber ich würde erwarten, dass ein solches Problem eine Warnung ist, kein Fehler. – noodl

Verwandte Themen