• hallo,

    Mein Thread würde vermutlich in 3 verschiedene Unterforen passen ich habe jetzt einfach mal dieses hier ausgewählt.
    Ich habe lange nicht mehr mit HTML/CSS/Javascript/PHP gearbeitet deswegen ist mein Wissen (welches auch noch nie so sonderlich groß war) etwas eingerostet. Habe allerdings viel Programmiererfahrung in Java und kann auch etwas Haskell und SQL.

    Anyway folgendes will ich auf meiner Webseite implementieren und frage mich gerade wie ich dass am besten angehe.

    Ich will eine Liste ausgewählter Own3d und Twitch Livestreams auflisten. (allerdings sollen nur die angezeigt werden welche auch tatsächlich gerade online sind) Die Liste soll nach gewissen Kriterien gruppiert sein, die einzelnen Gruppen sollen auf und zu gemacht werden können, defaultmäßig alle offen sein. (so dropdown mäßig) Beim Klicken eines solchen Menüpunktes wird der jeweilige Stream in einem Iframe geöffnet. Ich habe daran gedacht Streameinbettcode, Name, Onlinestatus, Viewers usw. in einer Datenbank zu speichern, was mMn die beste Lösung wäre, da die Wartung so ausgesprochen leicht sein wird.
    Was mir jetzt die meisten Grübel bereitet ist wie ich die mittels SQL ausgewählten Tabelleneinträge der Datenbank als Menüpunkt speichere und diese gleichzeitig so verlinke, dass beim Klicken darauf der ebenfalls aus der DB ausgelesen Code ins Mainframe übergeben wird, weil ich absolut nicht weiß wie ich aus Datenbankeinträge Menüpunkte mache.

    Vielleicht können mir ein paar Leute mit mehr Erfahrung dabei etwas weiterhelfen??

    Edit:
    Hier ein Beispiel was ich meine:
    http://clgaming.net/live/6718-dyrus
    Ich will halt noch zusätzlich die Streams gruppieren und eventuell noch Filtermöglichkeiten hinzufügen.

    Einmal editiert, zuletzt von Jakob Abfalter (24. Oktober 2012 um 22:26)

  • na wenn du sql kannst sollte dir ja bewusst sein wie du 1:n und n:m beziehungen darstellst im ERD.
    mach dir ne tabelle menu und da hauste als name oder nav_title den wert fürs menü rein. und ne flag ob active oder nich
    abfrage: schleife: ausgabe.
    dann brauchst du noch ne seite auf die du verlinkst, die könntest du zB unter page in die menutabelle stopfen, wenn du andersartige templates hast dann mach des auch noch rinn. wenn das flag die inactive zeigt, zeigste den menüpunkt erst gar nich an...

    und den code kannse ja dann auch direkt in die db stopfen, dann brauchste wohl auch keinen iframe mehr.
    die abfrage, ob ein stream online ist, muss da auch noch laufen, die frage ist nur wie weisst du welcher stream on is? gibts nen statuscode 404? oder irgendoiwe nen indikator, dann gilt es eine extra tabelle zu erstellen, wo die streams sdrin sind, identifikator-URL, title etc pp
    abfrage: schleife: prüfen auf status, flag im menu setzen wenn offline

    das wär jetzt für jeden stream nen eigener menüpunkt, aber die vorgehensweise kannste natürlich beliebig variieren und anpassen :P

    happy coding und viel erfolg

  • Und wie oft willst du deine Datenbank aktualisieren um auf dem laufenden zu bleiben?
    Own3d kenne ich nicht, aber twitch.tv bietet wohl auch eine API, was wohl der bessere Weg wäre.
    http://support.twitch.tv/discussion/365…ir-a-twitch-api

    Ansonsten verstehe ich gerade nicht ganz wo das Problem ist ein Menu aus Datenbank-Einträgen zu erstellen.
    Du liest die Einträge aus und generierst mittels PHP damit den HTML-Code fürs Menu der dann ausgegeben wird.
    Wenn du da Hilfe möchtest solltest du noch mal konkretisieren wo genau du nicht weiterkommst.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Hallo ich bin jetzt mit dem "basic code" schon langsam am fertig werden, was mir grade ein bisschen Sorgen macht sind die Laufzeiten für das Auslesen des onlineStatus und der Viewer eines Streams.
    Hier mal der Code (Twitch Viewerauslesen hab ich noch nicht geschrieben)

    Eine Anfrage alleine dauert schon ~ 3 Sekunden, was bei vlt 30 Streams welche angezeigt werden einfach nicht bewerkstelligbar ist. Das Problem liegt scheinbar an dem langsamen API der Streamanbieter. Wie ich schon sagte hab ich mit PHP, XML e.c. kaum was am Hut und könnte da eure Hilfe gebrauchen.
    Ein paar Überlegungen von mir:
    Ist es möglich diese Werte irgendwie zu cachen, oder so in der Art?? Dann müsste nur diese lästig lange Ladezeit nur einmal durchgeführt werden, obwohl diese Lösung vlt auch nicht optimal ist.
    Wäre es theoretisch möglich die Werte in gewissen Zeitabständen in eine Datenbank zu schreiben?? Angenommen ich hätte einen Server, sollte dies möglich sein oder?
    ich habe auch schon den Quelltext von http://clgaming.net/ gecheckt, lustiger weise nur

    Code
    <a href="/live/4-clg-doublelift">CLG Doublelift</a><div>
    1381 viewers
    </div>

    Kann es sein dass die die Werte auch einer Datenbank entnehmen??

    Bin dankbar für jede Antwort :)

    Edit: Eben hat mich ein Freund auf eine weitere Idee gebracht, ist es möglich diese Anfragen zu parallelisieren, ähnlich wie in Java Threads, geht dass in Php??

    2 Mal editiert, zuletzt von Jakob Abfalter (30. Oktober 2012 um 11:53)

  • alsomit threading oder hyperthreading hab ich bisher nix zu tun gehabt, aber du könntest nen cronjob bauen der 1 oder 2mal am tag alle streams durchnudelt und in die db schreibt ob die sau online is oder net...

    ja das langatmige gedöhnse liegt meist dann an anderen anbietern und deren langsamen apis, eventuell kannste das auch über ajax bewerkstelligen und dem user dann für jeden einzelnen aufruf nen loader zeigen :)

  • alsomit threading oder hyperthreading hab ich bisher nix zu tun gehabt, aber du könntest nen cronjob bauen der 1 oder 2mal am tag alle streams durchnudelt und in die db schreibt ob die sau online is oder net...

    ja das langatmige gedöhnse liegt meist dann an anderen anbietern und deren langsamen apis, eventuell kannste das auch über ajax bewerkstelligen und dem user dann für jeden einzelnen aufruf nen loader zeigen :)

    danke für deine Antwort.
    also 1 oda 2 mal am tag durchlaufen ist leider vieeel zu wenig. Dann würden ja zeitweise streams angezeigt die längst nicht mehr online sind, bzw streams die längst online sind nicht angezeigt. (Meine Seite soll Streams von League of Legends Pros zeigen, diese streamen meist nur ein paar Stunden pro Tag). Und die Viewerzahlen wären dann ja auch alles andere als aktuell.
    Das mit den in eine Datenbank schreiben kann ich daher glaub ich vergessen, da die Anzahl an Aktualiesierungen welche ständig durchgeführt werden müssten, die unstabilen APIs sicher nicht packen würden.
    Wie meinst du dass mit Ajax? Ich kenne diese Programmiersprache überhaupt nicht, was könnte ich mit der machen??

    Was mir auch noch eingefallen wäre, im ownd3d Quelltext eines Streams (im twitch wahrscheinlich auch) steht die Vieweranzahl. Würde ich irgendwie ein Programm schreiben, welches diese findet und ausliest könnte dies vielleicht schneller gehen als mit den APIs. Jemand eine Idee wie ich dass machen könnte??

  • also ich hab mich mit deinen streams da noch nicht beschäftigt, aber prinzipiell würd ih sagen du brauchst einmal ein script was dir die infos zu nem stream organisiert und dann machste den ajax-aufruf, das ist javascript!
    ajax = asynchrones javascript & xml
    damit rufste dann dein serverseitiges script auf und gibst das ergebnis in echtzeit auf der aktuell geladenen seite aus
    beschäftige dich mit jQuery und ajax ($.ajax(), $.get(), $.post())

  • Hab mal bei Own3d gefragt und sehr schnell ein Antwort bekommen :)

    Ohne dass ich gefragt habe, haben sie mir gesagt wie clgaming es macht, yay :D
    Werde dass jetzt auch so machen, wenn ich die HP dann online gebe, werd ich wohl nen Server brauchen für den Cron job, aba ok ^^

  • Haudi ich hab mal wieder ne kleine Frage.

    Habe mein Php Script für den Cron Job jetzt soweit fertig.
    Wenn ich testweise auf meinem Wamp Server ausführe funktioniert es, allerdings gibt es mir folgenden Error aus.

    [TABLE='class: xdebug-error xe-notice']

    [tr]


    [TH='bgcolor: #f57900, colspan: 5, align: left']( ! ) Notice: Undefined offset: 0 in D:\wamp\www\Lol Streamportal\database_actualize.php on line 45[/TH]

    [/tr][tr]


    [TH='bgcolor: #e9b96e, colspan: 5, align: left']Call Stack[/TH]

    [/tr][tr]


    [TH='bgcolor: #eeeeec, align: center']#[/TH]
    [TH='bgcolor: #eeeeec, align: left']Time[/TH]
    [TH='bgcolor: #eeeeec, align: left']Memory[/TH]
    [TH='bgcolor: #eeeeec, align: left']Function[/TH]
    [TH='bgcolor: #eeeeec, align: left']Location[/TH]

    [/tr][tr]


    [TD='bgcolor: #eeeeec, align: center']1[/TD]
    [TD='bgcolor: #eeeeec, align: center']0.0013[/TD]
    [TD='bgcolor: #eeeeec, align: right']693072[/TD]
    [TD='bgcolor: #eeeeec']{main}( )[/TD]
    [TD='bgcolor: #eeeeec']..\database_actualize.php:0[/TD]

    [/tr][tr]


    [TD='bgcolor: #eeeeec, align: center']2[/TD]
    [TD='bgcolor: #eeeeec, align: center']1.6963[/TD]
    [TD='bgcolor: #eeeeec, align: right']705824[/TD]
    [TD='bgcolor: #eeeeec']get_viewers( )[/TD]
    [TD='bgcolor: #eeeeec']..\database_actualize.php:63[/TD]

    [/tr]


    [/TABLE]

    [TABLE='class: xdebug-error xe-notice']

    [tr]


    [TH='bgcolor: #f57900, colspan: 5, align: left']( ! ) Notice: Undefined offset: 0 in D:\wamp\www\Lol Streamportal\database_actualize.php on line 45[/TH]

    [/tr][tr]


    [TH='bgcolor: #e9b96e, colspan: 5, align: left']Call Stack[/TH]

    [/tr][tr]


    [TH='bgcolor: #eeeeec, align: center']#[/TH]
    [TH='bgcolor: #eeeeec, align: left']Time[/TH]
    [TH='bgcolor: #eeeeec, align: left']Memory[/TH]
    [TH='bgcolor: #eeeeec, align: left']Function[/TH]
    [TH='bgcolor: #eeeeec, align: left']Location[/TH]

    [/tr][tr]


    [TD='bgcolor: #eeeeec, align: center']1[/TD]
    [TD='bgcolor: #eeeeec, align: center']0.0013[/TD]
    [TD='bgcolor: #eeeeec, align: right']693072[/TD]
    [TD='bgcolor: #eeeeec']{main}( )[/TD]
    [TD='bgcolor: #eeeeec']..\database_actualize.php:0[/TD]

    [/tr][tr]


    [TD='bgcolor: #eeeeec, align: center']2[/TD]
    [TD='bgcolor: #eeeeec, align: center']5.0968[/TD]
    [TD='bgcolor: #eeeeec, align: right']706400[/TD]
    [TD='bgcolor: #eeeeec']get_viewers( )[/TD]
    [TD='bgcolor: #eeeeec']..\database_actualize.php:63[/TD]

    [/tr]


    [/TABLE]

    [TABLE='class: xdebug-error xe-notice']

    [tr]


    [TH='bgcolor: #f57900, colspan: 5, align: left']( ! ) Notice: Undefined offset: 0 in D:\wamp\www\Lol Streamportal\database_actualize.php on line 45[/TH]

    [/tr][tr]


    [TH='bgcolor: #e9b96e, colspan: 5, align: left']Call Stack[/TH]

    [/tr][tr]


    [TH='bgcolor: #eeeeec, align: center']#[/TH]
    [TH='bgcolor: #eeeeec, align: left']Time[/TH]
    [TH='bgcolor: #eeeeec, align: left']Memory[/TH]
    [TH='bgcolor: #eeeeec, align: left']Function[/TH]
    [TH='bgcolor: #eeeeec, align: left']Location[/TH]

    [/tr][tr]


    [TD='bgcolor: #eeeeec, align: center']1[/TD]
    [TD='bgcolor: #eeeeec, align: center']0.0013[/TD]
    [TD='bgcolor: #eeeeec, align: right']693072[/TD]
    [TD='bgcolor: #eeeeec']{main}( )[/TD]
    [TD='bgcolor: #eeeeec']..\database_actualize.php:0[/TD]

    [/tr][tr]


    [TD='bgcolor: #eeeeec, align: center']2[/TD]
    [TD='bgcolor: #eeeeec, align: center']6.0124[/TD]
    [TD='bgcolor: #eeeeec, align: right']706184[/TD]
    [TD='bgcolor: #eeeeec']get_viewers( )[/TD]
    [TD='bgcolor: #eeeeec']..\database_actualize.php:63[/TD]

    [/tr]


    [/TABLE]


    wie gesagt es funktioniert aber trotzdem, ist das ein Problem oder kann ich es so lassen? Hier der Code der scheinbar das Problem verursacht

    Code
    [/FONT][/COLOR]	//Twitch	else if($typ == 't') {		$json_file = file_get_contents("http://api.justin.tv/api/stream/list.json?channel=".$stream_id);		$json_array = json_decode($json_file, true);		return $json_array [0]['channel_count'];	}

    4 Mal editiert, zuletzt von Jakob Abfalter (4. November 2012 um 23:04)