IRC Channel User auslesen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
m0bby
Mitglied
Beiträge: 82
Registriert: 23.03.2004 13:19
Kontaktdaten:

IRC Channel User auslesen

Beitrag von m0bby »

Hallo,

ich würde gerne meine PHP-Chat gegen einen IRC(-Java) Chat ersetzen.
Das Problem dabei: Wie kann ich weiterhin auf meiner Homepage anzeigen, WER gerade im Chat ist?

Ich habe jetzt zwei Tage lang das Web nach einer Lösung durchsucht und nichts gefunden :-?
Das heiß, fast nichts. Ich bin auf viele interessante PHP und Perl Lösungen zum Aufbau von IRC-Bots etc. gestoßen. Besonders smartIRC von Mirco "MEEBEY" Bauer <http://www.meebey.net> finde ich erwähnenswert.
Aber eigentlich ist das alles doch für meinen Zweck etwas viele overload. Oder nicht?

Was ich suche funktioniert etwa so:

MySQL-Tabelle:

Code: Alles auswählen

#
# Tabellenstruktur für Tabelle `channelnicks`
#

CREATE TABLE `channelnicks` (
  `id` mediumint(8) NOT NULL auto_increment,
  `nicks` varchar(255) NOT NULL default '',
  `timestamp` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
index.php:

Code: Alles auswählen

$sql = 'SELECT * FROM channelnicks WHERE id = 1';
$db->sql_query($sql);
$channelinfo = $db->sql_fetchrow($result);
if ($channelinfo['timestamp'] < time() - 120)
{
    /*
    Hier nun connect zum IRC-Server
    Holen der Userliste mittels "/NAMES #channelname"
    Ablegen der Nicknames in $channelinfo['nicks']
    Disconnect vom IRC-Server
    */
    $sql = "UPDATE channelnicks SET nicks = '".$channelinfo['nicks']."', timestamp = '".time()."' WHERE id = 1";
    $db->sql_query($sql);
} 
Gibbet denn für diese, sicherlich von vielen Webseiten- und Foren-Betreibern gewünschte, Funktion (noch) keine Lösung???

Gruß
mObbY
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

hm ..

so schwer is das ned .. einfach mal bisschen über socket connections im php manual durchlesen .. http://de.php.net/manual/de/ref.sockets.php

_aber_ wieso man soetwas nicht tun sollte ..

denk mal drüber nach wenn jeder soetwas macht .. oder sagen wir mal 10000 leute .. dann sind das unter umständen 10000 sinnlose connections alle 2 minuten ..
noch dazu kommt das dir ein /names #channel unter normalen umständen nicht reicht .. du brauchst also vorher noch nen join ..
was bedeutet das unter umständen alle 2 minuten jemand in den betreffenden channel joined und wieder parted .. solltest du nicht channel owner sein is der bot nach nem tag gebanned ..

auch wird dein provider das in der regel recht schnell merken -> kick ..


wenn du das wirklich machen willst/musst .. dann besorg dir nen richtigen bot .. eggdrop .. dafür gibts meines wissen massenhaft scripts die es ermöglichen ne userliste des channels anzuzeigen .. (gabs jedenfalls vor 3-4 jahren mal) .. bin da nimmer auf dem laufenden ..

mit allen anderen sachen machst du das irc kaput ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Benutzeravatar
m0bby
Mitglied
Beiträge: 82
Registriert: 23.03.2004 13:19
Kontaktdaten:

Beitrag von m0bby »

Danke für deine Antwort.
Aber so drastisch wie du, sehe ich das nicht.
Mein Forum hat z.Z. ca. 60 User, davon ca. 30 aktive. Die Portalseite wurde im letzten Monat 3140 Mal aufgerufen. Das macht im Schnitt ca. 100 Mal am Tag bzw. 4 Mal pro Stunde. Sprich, rein rechnerisch würde alle 15 Minuten einmal das Skript beim IRC-Server connecten und die Namen der User im #channel abfragen.
Wenn sich meine Zugriffszahlen in Zukunft mal drastisch erhöhen sollten, dann sähe es vielleicht anderes aus, aber im Moment, kann ich deiner Argumentation nicht zustimmen.

Warum meinest du, das eine /names #channel nict reicht?
Ich muss doch blos wissen, wieviele User im #channel sind und wie deren Nicknames lauten. Dies wird doch AFAIK alles bei einem einfachen /names #channel ausgegeben, oder nicht?

Was das dauernde join-part angeht, gebe ich dir voll und ganz recht. Das würde mit sicherheit den Unmut der Serverbetreiber und Channeluser nach sich ziehen.

Noch mal: Ich rede hier von einem relativ kleinen Forum mit einem Chat, der so gut wie immer leer ist. Nur gibt es halt Leute, die gerne vorher wissen wollen, wer im Chat ist, BEVOR sie den Raum betreten - aus welchen Gründen auch immer.

Ok, dann werde ich mir wohl mal in einer freien Minute das Thema socket connections zu Gemüte führen. Ich hatte gedacht/gehofft, dass schon jemand diesen Codeschnippsel fertig hat, denn bei meiner Suche nach einer solchen Lösung bin ich dutzendfach auf andere gestoßen, die genau das gleiche suchen...

schönen Gruß
mObbY
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Beitrag von QCO »

Schnelle direkte Hilfe? Modeinbau? Umfassender, persönlicher Support? Ein individuelles Design/Template?
Ich bin käuflich und löse zu kleinen Preisen Deine Probleme. Anfragen bitte per PN oder Mail.
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

mach mal ein /names #channel .. wenn du nicht im channel bist ..

du siehst auserhalb des channels nur leute die nicht invisible sind .. nedmal 10% ..

natürlich isses ned so dragisch wenn es nur einer macht .. aber wie gesagt wenns jeder macht is des was anderes .. 80-90% des irc traffics sind durch bots und solche scripte ..
argh .. ich will jetzt keine "scriptkiddies sind böse"- diskussion führen ..

aber ..
denk bitte drüber nach obs ned andere möglichkeiten gibt .. vielleicht findet sich auch jemand der dir nen eggy leiht .. n channel ohne bot is auf dauer eh nix .. oder du bist daueronline ..
und schreibst n mirc script .. könnt ich dir sogar bei helfen .. usw .. einfach weng kreativ sein ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Benutzeravatar
m0bby
Mitglied
Beiträge: 82
Registriert: 23.03.2004 13:19
Kontaktdaten:

Beitrag von m0bby »

Hallo,
smartIRC kenne ich schon (s.o.). Ich finde aber das es "etwas" übertrieben ist, eine ganze API einzubinden "nur" um eine Namensliste zu bekommen... Und extra einen Bot laufen zu lassen wie z.B. Eggdrop lohnt sich bei meinem, meist leerem, Chat auch nicht.

Gruß
mObbY
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag von k-5 »

m0bby hat geschrieben: Ich finde aber das es "etwas" übertrieben ist, eine ganze API einzubinden "nur" um eine Namensliste zu bekommen
*g* .. aber die ganzen connects sind ned übertrieben .. nehm die api .. schmeiß raus was du ned brauchst .. wenns dir wirklich zu wuchtig ist .. fertig .. (oder anderesrum .. such dir raus was du brauchst) ..

solche "mini" skriptchen veröffentlich nunmal kaum jemand ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Antworten

Zurück zu „Coding & Technik“