Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] fgets do bota
Forum PHP.pl > Forum > PHP
k00sl
Witam, mam perfidny problem z botem w php. Wiem zaraz wszyscy powiedzą, że php się do tego nie nadaje.

Mam kod tego typu:

  1. $p = array();
  2. $p['SOCKET'] = @fsockopen('irc.quakenet.org', rand(6667,6669), $errno, $errstr, 5);
  3.  
  4. if($p['SOCKET']){
  5.  
  6. while(true){
  7.  
  8. $p['READ_BUFFER'] = fgets($p['SOCKET'], 1024);
  9.  
  10. // tutaj jakieś inne warunki i operacje
  11.  
  12. }
  13.  
  14. }


Problem polega na tym, że skrypt czeka aż zmienna $p['READ_BUFFER'] zostanie uzupełniona nadchodzącym pakietem i przez to warunki, które są poniżej nie wykonają się dopóki nie dojdzie pakiet... a chciałbym najlepiej tak, aby zmienna $p['READ_BUFFER'] nie zostawała uzupełniana gdy nie ma żadnego pakietu. Nie wiem jak rozwiązać ten problem, może ktoś z Was robił tego typu rzeczy w php i będzie znał na to radę. Bardzo proszę o pomoc smile.gif
Fifi209
A do czego to bot? Nie da rady w curl?
swoją drogą możesz zmniejszyć timeout
erix
Jak przez cURL chcesz napisać bota do IRC-a...?

Cytat
Problem polega na tym, że skrypt czeka aż zmienna $p['READ_BUFFER'] zostanie uzupełniona nadchodzącym pakietem i przez to warunki, które są poniżej nie wykonają się dopóki nie dojdzie pakiet...

Czytaj mniejszymi paczkami?
Fifi209
Cytat(erix @ 9.07.2010, 12:32:58 ) *
Jak przez cURL chcesz napisać bota do IRC-a...?


Właśnie nie zwróciłem na to uwagi, że to irc.
k00sl
Cytat(erix @ 9.07.2010, 12:32:58 ) *
Czytaj mniejszymi paczkami?


Niestety to nic nie daje nawet jak się ustawi na mniejsze lub nic nie wpisze, tak czy siak funkcja czeka aż otrzyma pakiet. Jedyne rozwiązanie (najgorsze) to wysyłanie jakiegoś żądania do serwera, tak aby zwracał pakiet za każdym przeładowaniem pętli, ale zfloodowało by to serwer i otrzymał bym kicka, więc to odpada...
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.