Autor | Zpráva | ||
---|---|---|---|
kzujt Profil * |
#1 · Zasláno: 8. 7. 2007, 16:37:45
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 |
#2 · Zasláno: 8. 7. 2007, 22:54:38
...
$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 * |
#3 · Zasláno: 9. 7. 2007, 11:35:44
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 * |
#4 · Zasláno: 9. 7. 2007, 11:39:04
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 |
#5 · Zasláno: 9. 7. 2007, 11:39:08
Fatal error: Maximum execution time of 30 seconds exceeded in C:websms_pokus.php on line 7
set_time_limit(0); |
||
nightfish Profil |
#6 · Zasláno: 9. 7. 2007, 11:40:58
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 * |
#7 · Zasláno: 9. 7. 2007, 12:00:46
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 |
#8 · Zasláno: 9. 7. 2007, 12:14:49
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 * |
#9 · Zasláno: 9. 7. 2007, 12:21:03
už to mám, díky všem za rady.
|
||
Časová prodleva: 17 let
|
0