Live-Stream
So ich möchte nun auch mal wider was hier veröffentlichen, darum tue ich dies zugleich und möchte auch darauf hinweisen das ich für Schäden nicht Hafte falls welche entstehen sollten oder anderes in der Richtung. Support gibt es nur in diesem Thread und in meinem Forum.
Beschreibung: Mit dieser Funktion, kann man einen kleinen Live-Stream via JS erzeugen, das ganze gibts aber auch in einer PHP Version, doch darauf verzichte ich vorerst, da die JS version wesentlich anspruchsvoller ist. Der Schnippsel ist nur eine kleine Spielerei und noch nicht ganz fertig.
Installation/Einbau: Datei: common.php Suche:
[php]if (file_exists("dbconnect.php")){ [/php]
Füge darüber:
[php]function stream($name, $file) {
global $output;
$output .= "\n<script type=\"text/javascript\">\n";
$output .= "http_request = false;\n
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType(\"text/xml\");
// zu dieser Zeile siehe weiter unten
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject(\"Msxml2.XMLHTTP\");
} catch (e) {
try {
http_request = new ActiveXObject(\"Microsoft.XMLHTTP\");
} catch (e) {
}
}
}\n";
$output .= "setInterval(\"loadData()\",500);\n";
$output .= "function loadData() {
if (http_request) {
var jetzt = new Date();
http_request.open(\"GET\", \"lib/{$file}.php?count=\"+jetzt.getTime(), true);
http_request.onreadystatechange = function () {
if (http_request.readyState == 4) {
document.getElementById(\"{$name}\").innerHTML = http_request.responseText;
}
};
http_request.send(null);
}
}";
$output .= "</script>\n";
}[/php]
Beispiel/Nutzung:
[php]// Datenbank Inhalte ausgeben, dies in der jeweiligen Datei einfügen
stream("content","dbdata");
rawoutput("<div id=\"content\"></div>");
// Inhalt der Datei dbdata.php
require_once("../dbconnect.php");
$link = @mysql_connect($DB_HOST,$DB_USER,$DB_PASS);
@mysql_select_db($DB_NAME,$link);
$accounts = array();
$result = mysql_query("SELECT * FROM accounts");
while ($row = mysql_fetch_assoc($result)) {
if (!in_array($row['acctid'], $accounts)) {
array_push($accounts, $row['acctid']);
echo "Account ID: {$row['acctid']}<br />";
}
}
[/php]
Erläuterung: Warum noch einmal zur Datenbank Verbinden wenn wir es bereits in der common getan haben?, das Problem besteht darin. Das er sonst die Ausgaben der common.php ausliest und genau das wollen wir nicht. D.h. machen wir einen extra Verbindung, diese wird aber jedes mal aufs neue widerholt. Man kann auch die bereits vorher zur Datenbank verbinden, aber dies ist natürlich ansichtssache. Ansonsten sollte dies einwandfrei Funktionieren, es könnte aber vorraussichtlich bei einigen Hostern probleme geben, was das Verbinden zur Datenbank betrifft. Aufgrund von max. Verbindungen... Diese Wahrscheinlichkeit ist aber mehr als gering.
Ansonsten Viel Spaß damit, eine kleinere Optimierte Version sollte bald folgen. Denke ich, je nachdem in wie weit sich der Stream verbessern lässt.
|