Autor Zpráva
kzujt
Profil *
Zdravím, když se pokusím přes sockety načíst sms bránu Vodafone, tak to prostě nejde (dojde k timeotu). Když to zkusím na jakýkoliv jiný server, tak to jde normálně. Používám tento kód:
---------------------------------------------------
$sock = fsockopen("sms.vodafone.cz", 80);

fputs($sock, "GET /index.php HTTP/1.1 Host: sms.vodafone.cz ");

while ($line = fgets($sock, 128)){
$page .= $line;
}

echo $page;

---------------------------------------------------

Už fakt nevím čím by to mohlo být. Díky za rady.
temistokles
Profil
...
$sock = fsockopen("sms.vodafone.cz", 80, $err);
...
echo $err;


Ak to nevypíše chybu, tak skús toto:
echo fgets($sock, 128);
Vysekni to proste z cyklu, zobraz len jeden riadok, resp. 128 znakov.


Dojde k timeoutu socketu či skriptu? Keďže nevidím timeout na socket, tuším skriptu, zvýš si prípadne potrebný čas.


Ďalej skús použiť HTTP/1.0, a tuším by si mal v hlavičke používať riadkovanie [lomítko]r[lomítko]n
kzujt
Profil *
Zkusím, dík.

Při vykonávání to vypíše tuto chybu:

Fatal error: Maximum execution time of 30 seconds exceeded in C:websms_pokus.php on line 7

kde na řádku č.7 je:

while ($line = fgets($sock, 128)){

-----

Jinak ty lomítka s r a n používám, fórum to nezobrazilo :P
kzujt
Profil *
Zajímavý, když sem to vysekl z toho cyklu, tak to funguje ... nechápu proč, ale potřebuju načíst celou stránku, ne jen jeden řádek ...
nightfish
Profil
Fatal error: Maximum execution time of 30 seconds exceeded in C:websms_pokus.php on line 7

set_time_limit(0);
nightfish
Profil
Zajímavý, když sem to vysekl z toho cyklu, tak to funguje
protože se přečte jenom jeden řádek (max 128 bajtů), což je časově méně náročné než přečíst celou stránku - nicméně třeba vodafone neukončuje socket po dokončeném přenosu stránky - dej si do toho cyklu echo $line; a podívej se, co ti to vypíše jako poslední...
kzujt
Profil *
No tak asi neukončuje, protože tak se celá stránka načetla normálně ... ale jak to teda ukončit ručně? :-)
nightfish
Profil
ale jak to teda ukončit ručně?
až načteš to, co potřebuješ, tak z toho cyklu breakem vyskočíš
popřípadě z něho vyskočíš po nějaké době od začátku načítání
kzujt
Profil *
už to mám, díky všem za rady.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: