addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwchatcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscrosseditemptyheartexportfacebookfolderfullheartglobegmailgoogleimagesinstagramlinklocation-pinmagnifying-glassmailminusmoremuplabelShape 3 + Rectangle 1outlookpersonplusprice-ribbonImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruseryahoo

fputs og while/feof

From: Jette D.
Sent on: Thursday, January 31, 2013 5:47 PM
Hej alle

God jul, godt nytår og håber I holder varmen - Jeg er tilbage efter ½ 
års barsel. Det er godt at komme til tastaturet igen :-)

Jeg har siddet i dag og kæmpet med en funktion der post'er filer til en 
anden server. Det tog 10 sekunder at overføre en lille billedfil på 
146kb, og så lang tid skal det jo slet ikke tage.

Her er koden i forsimplet udgave:


--------------------­--------------------­--------------------­----------
if (!$fp = fsockopen($someserve­r,80,$errno, $errstr,5))
   die('Connection failure');
fputs($fp, $data);
while (!feof($fp)) echo fgets($fp,32000);
fclose($fp);
--------------------­--------------------­--------------------­----------


Her er eksempel output:


--------------------­--------------------­--------------------­----------
HTTP/[masked] OK
Server: nginx/1.2.4
Date: Thu, 31 Jan[masked]:12:45 GMT
Content-Type: text/html
Content-Length: 2
Connection: keep-alive
X-Powered-By: PHP/5.4.6

OK
--------------------­--------------------­--------------------­----------


Det underlige er, at de første 7 linier kommer med få milisekunders 
mellemrum. Den loop der henter den blanke linie tager 10 sekunder, og 
derefter kommer så den sidste "OK" som er output fra det script der 
modtager filen.

Nu har jeg ændret koden til følgende:


--------------------­--------------------­--------------------­----------
if (!$fp = fsockopen($someserve­r,80,$errno, $errstr,5))
   die('Connection failure');
fputs($fp, $data);
echo fread($fp,32000);
fclose($fp);
--------------------­--------------------­--------------------­----------


Nu får jeg hele output uden forsinkelser...

Jeg har aldrig oplevet dette før, og faktisk har jeg på samme website et 
andet stykke php kode der også bruger while metoden uden problemer.

på php.net under fsockopen(), viser de netop while/feof metoden som 
eksempel. Hvad hulan er det jeg misser her?

Mvh. Jette


Our Sponsors

  • Eye4web

    Lokation + drinks & snacks

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy