Avatar billede carsten1973 Nybegynder
22. november 2012 - 10:03 Der er 1 kommentar

fwrite overfører kun noget af indholdet

Hej

Jeg har lavet et php script, som overfører en csv fil med data til en ekstern server. Nogle gange overfører den fint filen med alt indhold, men andre gange overfører det en tom fil eller en fil kun med dele af indholdet

Koden ser sådan ud:

$fp = (file_exists($path))? fopen($path, "w") : fopen($path, "w");
usleep(2000000);
echo fwrite($fp, $data);
fflush($fp);
fclose($fp);

hvor $path er linket til den eksterne server og $data er indholdet, der skal skrives



Jeg har forsøgt at løse problemet på forskellige måder, men uden succes:

Jeg har prøvet at køre cronjob der skriver indholdet i løbet af natten, hvor presset på den eksterne server er minimal.

Jeg har også prøvet at tilføje usleep med forskellige tidsintervaller samt ændret programmet, så det kun skriver 10 linjer ad gangen, men ingen af ​​de ovennævnte metoder har fungeret korrekt.
Endelig har jeg prøvet med og uden fflush ligesom jeg har prøvet med forskellie usleep intervaller.

fwrite($fp, $data); returnerer det antal bytes som skal sendes, hvilket lige nu er 4541 uanset, om den scriptet sender en tom fil , det hele eller dele af indholdet.

Når jeg tester på den lokale server (redirecter $path til en folder på min egen server, overfører den alt indholdet hver gang, så det er kun, når det er på det eksterne site, at det kan give problemer.

Nogen forslag til hvad problemet kunne være?


Hilsen, Carsten
Avatar billede lclemens Nybegynder
22. november 2012 - 11:02 #1
http://php.net/manual/en/function.fwrite.php

Note:

Writing to a network stream may end before the whole string is written. Return value of fwrite() may be checked:
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester