Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dane z serwera IRC
Forum PHP.pl > Forum > PHP
Tomplus
Chciałbym się dowiedzieć wchodząc na stronę, swoją stronę jak można zrobić skrypt (jeżeli się da) który mi sprawdzi ile jest userów na kanale na serverze IRC.

jak narazie takie rzeczy wiem tylko pisząc skrypty w mIRC, ale raczej tego jezyka nie można wykorzystać w pisaniu w php.

moze gdzieś już jest zrobiony taki bajerek , chętnie bym przetestowałbym na stronie.
hwao
Otwierasz specyfikacje irc'a i jazda smile.gif

fsockopen i analizujesz dane winksmiley.jpg

w internecie jest pelno informacji jak napisac bota ircowego w php, lub tez zciagni gotowce
spenalzo
Napisanie skryptu wchodzącego na irc i pobierającego użytkowników to 10 minut roboty winksmiley.jpg Protokół IRC jest imo jednym z najbardziej przejrzystych tongue.gif

Specyfikacja --> http://rfc.net/rfc1459.html
Tomplus
@hwao
z manuala o tym fsockopen wyniosłem tyle ze mi to NIE działa!
wpisuje adres serwera:port i nie mam zadnych danych
to samo jak przy próbie ładowania zwykłej strony o porcie 80
próbuje się dostać do:
irc.quakenet.org:6667-6669
spenalzo
OK, pomylilem sie - zajeli mi to 15 minut sadsmiley02.gif

  1. <pre><?php
  2. $nick="pasibrzuch_".rand(1,10);
  3.  
  4. $fp=fsockopen("irc.quakenet.org",6667);
  5.  
  6. fwrite($fp,"NICK ".$nick."\r\n");
  7. fwrite($fp,"USER ".$nick." ".$nick." ".$nick." :Jan Kowalski\r\n");
  8. while(!feof($fp))
  9. {
  10. $wiersz=fgets($fp,1024);
  11. flush();
  12. if(strstr($wiersz, "PING :"))
  13. {
  14. $tmp=explode(":",$wiersz);
  15. fwrite($fp,"PONG :".trim($tmp[1])."\r\n");
  16. fwrite($fp,"JOIN #kanal\r\n");
  17.  
  18. }
  19.  
  20. $x=explode(" ",$wiersz);
  21. if($x[1]=="353")
  22. {
  23. $nicki=array_slice($x,5);
  24. }
  25.  
  26.  
  27. if(strstr($wiersz, "End of /NAMES list"))
  28. {
  29. fclose($fp);
  30. break;
  31. }
  32. }
  33. print_r($nicki);
  34. ?></pre>



wywolanie skryptu zajmuje okolo 10 sekund, wiec zapomnij o wyswietlaniu tego przy przeladowaniu strony. Pamietaj, że każde wywolanie skryptu na ircu wyglada tak:
Cytat
[20:14] * Joins: pasibrzuch_6 (~pasibrzuc@xxx.neoplus.adsl.tpnet.pl)
[20:15] * Quits: +pasibrzuch_6 (~pasibrzuc@xxx.neoplus.adsl.tpnet.pl) (Read error: EOF from client)
[20:15] * Joins: pasibrzuch_2 (~pasibrzuc@xxx.neoplus.adsl.tpnet.pl)
[20:16] * Quits: +pasibrzuch_2 (~pasibrzuc@xxx.neoplus.adsl.tpnet.pl) (Read error: EOF from client)
[20:19] * Joins: pasibrzuch_8 (~pasibrzuc@xxx.neoplus.adsl.tpnet.pl)
[20:19] * Quits: +pasibrzuch_8 (~pasibrzuc@xxx.neoplus.adsl.tpnet.pl) (Read error: EOF from client)

co w krótkim czasie może doprowadzić użytkowników do bialej gorączki.
Innym wyjściem jest, żeby bot siedzial na kanale caly czas, i co np. 10 minut zapisywal wynik do pliku tekstowego tak jak to kiedyś bylo na tym forum zrobione tongue.gif (też przeze mnie)

Cytat
z manuala o tym fsockopen wyniosłem tyle ze mi to NIE działa!
wpisuje adres serwera:port i nie mam zadnych danych
to samo jak przy próbie ładowania zwykłej strony o porcie 80

O ile dobrze pamiętam to nic nie dostaniesz dopóki czegoś nie wyślesz tongue.gif
Tomplus
[cenzura]

@spenalzo
to jest ładny prosty skrypt, ale za cholere nie wiem dlaczego mi nie działa!

wrzucam do pliku
zmieniam kanał na ten co ja chce sprawdzić
czekam 5-10-15 s. i strona się wczytuje - pusta!

ten twój skrypcik mi nie działa a wcześnie próbowałem uruchomić php-egg czyli bota w php, skutek był identyczny => czyli pojawia się NIC.
spenalzo
Ja mam podobny efekt na jednym z serwerów - zablokowane wszystkie polaczenia do sieci IRC. Ewentualnie jakiś inny problem z siecią (jeżeli odpalasz ze swojego kompa).
Tomplus
domowy, 1 platny i 1 darmowy = 3 serwery na których testowałem

wszędzie skutek taki sam.
spenalzo
Szczerze mówiąc to nie wiem winksmiley.jpg
Nie wiem czy to ma jakieś znaczenie ale testowane to było na php 4.

Edit: sprawdz czy masz włączone wyswietlanie błędów. Wrzuciłem ten skrypt na jeden z serwerów i wyskoczył błąd:
Cytat
Warning:  fsockopen(): unable to connect to irc.quakenet.org:6667 in /home/www/spenalzo/2.php on line 4


Na drugim to samo: "Connection timed out".
hwao
error_reporting()

  1. <?php
  2. error_reporting( E_ALL );
  3. ?>


Daj to w 1 lini skryptu
spenalzo
To nic nie da, jedyne błędy to:
Cytat
Warning:  fsockopen(): unable to connect to irc.quakenet.org:6667 in /home/www/spenalzo/2.php on line 4

nic innego sie nie pokazuje tongue.gif
Tomplus
a to czasem nie jest wina portu?
spenalzo
Wina serwera - zablokowane porty. Możesz spróbwać inne porty, ale generalnie zakres 6667-6670 jest zablkowany, i raczej nic na to nie poradzisz...
Dziwi mnie jedynie, że nie działa na twoim kompie tiredsmiley.gif
Tomplus
może to przez firewalla?
hwao
dzialaja Ci klienty mirca na kompie?

jaki masz ten serwer? sam instalowales czy z paczki jakiej?

dales raportowanie bledow? to bys wiedzial czemu masz "pusta strone"
spenalzo
Testowane u mnie na PHP4 i PHP5. Jedyne błędy to jakieś o niezdefiniwanej zmiennej tongue.gif

Natomiast, na serwerze zewnetrznym gdzie to sprawdzałem, to admin mi wyjaśnił ze porty 6667-6680 zostały zablokowane.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.