Każdy temat założony w ewidentnie złym dziale będzie usuwany! Proszę czytać opisy działów i regulamin!
![]() ![]() |
24.4.2006 - 19:26
Post
#1
|
|
|
aktywność: ![]() ![]() ![]() Grupa: +Bloger Postów: 52 Nr: 464 |
Wiadomo gg czasem lubi miec problemy, do tej pory mialem taki kod :
KOD <?php $plik = fopen ("http://www.gadu-gadu.pl/users/status.asp?id=3148881&styl=2", "r"); $status = fgets($plik, 2); if ($status) { echo '<img src=" http://sebastianpietrzak.com/bimg/'.$status.'.jpg" alt="Numer gg : 3148881" ><img src=" http://sebastianpietrzak.com/bimg/nrgg.jpg" >'; }else echo '<img src="error.jpg">'; ?> No i jesli serwer jest w pelni sprawny nie ma z tym problemow i wszystko dziala, gorzej jest wtedy kiedy serwer muli i muli i nic sie przez to nie otwiera tak wiec to rozwiazanie odpada. Pytanie brzmi czy nie da sie usprawnic tego kodu tak aby sprawdzal tylko to http://www.gadu-gadu.pl/users/status.asp?id=3148881&styl=2 przez poweidzmy 2 sekundy i jak nie zwroci tego w tym czasie to zwraca wartosc 0 ? |
|
|
|
25.4.2006 - 02:16
Post
#2
|
|
![]() aktywność: ![]() ![]() ![]() ![]() Grupa: Redakcja Postów: 165 Nr: 179 |
Hmm, funkcja otwierająca socket ma możliwośc ustawienia timeout'a
Poniższy kod powinien działać poprawnie: KOD <?php
$fp = fsockopen("status.gadu-gadu.pl", 80, $errno, $errstr, 2); if ($fp) { $out = "GET /users/status.asp?id=3148881&styl=2 HTTP/1.1\r\n"; $out .= "Host: status.gadu-gadu.pl\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $in .= fgets($fp, 128); } fclose($fp); $status = explode("\n", $in); $ile = count($status); echo '<img src=" http://sebastianpietrzak.com/bimg/'.$status[$ile-2].'.jpg" alt="Numer gg : 3148881" ><img src=" http://sebastianpietrzak.com/bimg/nrgg.jpg" >'; } else { echo '<img src="error.jpg">'; } ?> -------------------- |
|
|
|
25.4.2006 - 08:34
Post
#3
|
|
|
aktywność: ![]() ![]() ![]() Grupa: +Bloger Postów: 52 Nr: 464 |
Wywietlanie dziala ale czy dziala to ograniczenie czasowe to musze poczekac az trafie na zawieszony serwer gg, bardzo bym jeszcze prosil o komentarz do tego kodu, gdzie jest to ogranicznie czasowe i ile trwa ? Dzieki z gory
Aha i co robi jesli nie zwroci wartosci 1,2,3? Ten post edytował exway 25.4.2006 - 08:41 |
|
|
|
25.4.2006 - 09:50
Post
#4
|
|
![]() aktywność: ![]() ![]() ![]() ![]() Grupa: Redakcja Postów: 165 Nr: 179 |
w tej lini jest ustawiony czas po ktorym zostaje przerwane łaczenie:
KOD $fp = fsockopen("status.gadu-gadu.pl", 80, $errno, $errstr, 2); wynosi ono 2s., można podać w ms np. 0.001 i sprawdzić co do zwracanych wartości, nie wiem jakie moga być zwracane, dlatego napisz jakie one moga być. Wydaje mi się, że 0, 1 , 2 , 3, dla każdego stanu określona cyfra Możan wtedy trochę zabezpieczyć skrypt, że jak się nie połączy lub w pliku nie będzie cyfry 0-3 to wyświetli error Napisz co i jak jeszcze, wtedy się poprawi i udokumentuje kod -------------------- |
|
|
|
25.4.2006 - 10:04
Post
#5
|
|
|
aktywność: ![]() ![]() ![]() Grupa: +Bloger Postów: 52 Nr: 464 |
no teraz jest dobrze 1,2,3 a jak error to moze zwracac 4
Sprawdzilem i wyswietla taie cos na stronie : Warning: fsockopen(): unable to connect to status.gadu-gadu.pl:80 in /home/ebastian/public_html/blog/wp-content/themes/default/sidebar.php on line 43 tak wiec prosze zeby zwracalo wartosc 4 jak sie nie moze polaczyc, czyli tak aby na wyjsciu w tym KOD img src=" http://sebastianpietrzak.com/bimg/'.$status[$ile-2].'.jpg bylo http://sebastianpietrzak.com/bimg/4.jpg Ten post edytował exway 25.4.2006 - 10:12 |
|
|
|
25.4.2006 - 10:43
Post
#6
|
|
![]() aktywność: ![]() ![]() ![]() ![]() Grupa: Redakcja Postów: 165 Nr: 179 |
KOD <?php $fp = @fsockopen("status.gadu-gadu.pl", 80, $errno, $errstr, 1); // otwarcie polaczenia z serwerem gg; // timeiut = 1, jesli sie nie polaczy w tym czasie to anuluje dalsze laczenie;) if ($fp) { // jesli sie polaczono $out = "GET /users/status.asp?id=3148881&styl=2 HTTP/1.1\r\n"; $out .= "Host: status.gadu-gadu.pl\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); // wyslanie zapytania HTTP; while (!feof($fp)) { // pobranie odpowiedzi; $in .= fgets($fp, 128); } fclose($fp); $statusl = explode("\n", $in); // dzielenie odpowiedzi na linie; $ile = count($statusl); // ilosc lini (elementow w tablicy); $status = $statusl[$ile-2]; // status znajduje sie w ostatniej lini, // -2 bo tablica zacyna sie od 0 oraz ostatnia linia równiez zawierała \n // i dodatkowy 'pusty' element w tablicy sie pojawił; } // jesli status jest inny niż 1, 2 lub 3 to 4; if ($status != 1 && $status != 2 && $status != 3) { $status = 4; } echo '<img src=" http://sebastianpietrzak.com/bimg/'.$status.'.jpg" alt="Numer gg : 3148881" ><img src=" http://sebastianpietrzak.com/bimg/nrgg.jpg" >'; ?> Mam nadzieję, że teraz jest wszystko jasne -------------------- |
|
|
|
25.4.2006 - 11:07
Post
#7
|
|
|
aktywność: ![]() ![]() ![]() Grupa: +Bloger Postów: 52 Nr: 464 |
WIELKIE DZIEKI, wszystko dziala tak jak nalezy
|
|
|
|
![]() ![]() |
| Wersja Lo-Fi | Aktualny czas: 3 12 08 - 03:33 |