/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
klipper noget af data til fil
Fra : scootergrisen


Dato : 01-02-10 08:55

Jeg har en php funktion som tilføjer noget tekst i bunden af en fil om
hvilken side som blev besøgt på min hjemmeside og hvor de kom fra og
ip og tidspunkt.

Men nogle gange bliver hele linien ikke skrevet...

Den klipper noget af starten af linien.

Her er noget af den kode som jeg mener kan være skyld i fejlen:

-------------------------------------
KODE-------------------------------------

$fil = "besog.txt";
$datatilfil = "forsiden 127.0.0.1 - 01.01.2010\r\n";

if ($filhandle = fopen($fil, "a")){

if (fwrite($filhandle, $datatilfil)){

fclose($filhandle);

}else{

trigger_error("Der kunne ikke skrives til filen: \"$fil
\".", E_USER_ERROR);

}

}else{

trigger_error("Filen: \"$fil\" kunne ikke åbnes.",
E_USER_ERROR);
}
-------------------------------------
KODE-------------------------------------


Det er ligesom om at fwrite funktionen ikke får lov at skrive dataen
korrekt til filen.
Eller kan det være fordi jeg bruge 'a' i fopen altså så den tilføjer i
bunden af filen og der er et problem med det.

besog.txt filen skulle så gerne indenholde noget i stil med:

forsiden 127.0.0.1 - 01.01.2010
forsiden 23.34.23.123 - 02.01.2010
forsiden 127.0.0.1 - 04.01.2010
forsiden 127.0.0.1 - 06.01.2010
forsiden 147.35.3.123 - 03.05.2010

men nogen gange ser den sådan her ud:

forsiden 127.0.0.1 - 01.01.2010
forsiden 23.34.23.123 - 02.01.2010
.01.2010
010
forsiden 147.35.3.123 - 03.05.2010

Se den klipper noget af teksten og den klipper altid det forreste af
teksten aldrig bagfra.

Hvorfor bliver linien klippet ?

 
 
Peter Farsinsen (01-02-2010)
Kommentar
Fra : Peter Farsinsen


Dato : 01-02-10 17:11

scootergrisen wrote:
> $datatilfil = "forsiden 127.0.0.1 - 01.01.2010\r\n";

> Hvorfor bliver linien klippet ?

Har du tjekket at værdien af $datatilfil /altid/ er korrekt? Går ud fra
den bliver strikket sammen af nogle variable fra $_SERVER?

- Peter

Leif Neland (01-02-2010)
Kommentar
Fra : Leif Neland


Dato : 01-02-10 18:48

scootergrisen skrev:
> Jeg har en php funktion som tilføjer noget tekst i bunden af en fil om
> hvilken side som blev besøgt på min hjemmeside og hvor de kom fra og
> ip og tidspunkt.
>
> Men nogle gange bliver hele linien ikke skrevet...
>
> Den klipper noget af starten af linien.
>
> Her er noget af den kode som jeg mener kan være skyld i fejlen:
>
> -------------------------------------
> KODE-------------------------------------
>
> $fil = "besog.txt";
> $datatilfil = "forsiden 127.0.0.1 - 01.01.2010\r\n";
>
> if ($filhandle = fopen($fil, "a")){
>
> if (fwrite($filhandle, $datatilfil)){
>
> fclose($filhandle);
>
> }else{
>
> trigger_error("Der kunne ikke skrives til filen: \"$fil
> \".", E_USER_ERROR);
>
> }
>
> }else{
>
> trigger_error("Filen: \"$fil\" kunne ikke åbnes.",
> E_USER_ERROR);
> }
> -------------------------------------
> KODE-------------------------------------
>
>
> Det er ligesom om at fwrite funktionen ikke får lov at skrive dataen
> korrekt til filen.
> Eller kan det være fordi jeg bruge 'a' i fopen altså så den tilføjer i
> bunden af filen og der er et problem med det.
>
> besog.txt filen skulle så gerne indenholde noget i stil med:
>
> forsiden 127.0.0.1 - 01.01.2010
> forsiden 23.34.23.123 - 02.01.2010
> forsiden 127.0.0.1 - 04.01.2010
> forsiden 127.0.0.1 - 06.01.2010
> forsiden 147.35.3.123 - 03.05.2010
>
> men nogen gange ser den sådan her ud:
>
> forsiden 127.0.0.1 - 01.01.2010
> forsiden 23.34.23.123 - 02.01.2010
> .01.2010
> 010
> forsiden 147.35.3.123 - 03.05.2010
>
> Se den klipper noget af teksten og den klipper altid det forreste af
> teksten aldrig bagfra.
>
> Hvorfor bliver linien klippet ?

Der er vel ikke så meget trafik, at der er to besøgende, der kan skrive
til siden samtidig?

Leif

--
Jeg foretrækker min the tilberedt efter BS6008

scootergrisen (09-02-2010)
Kommentar
Fra : scootergrisen


Dato : 09-02-10 07:58

Jeg kan godt lave nogle forsøg med at checke at $datatilfil altid er
korrekt og ja den hente ip og sådan noget fra $_SERVER.
Jeg kan jo starte med $datatilfil = 'XXXXXXXXXX'; også se hvad der
sker.

> Der er vel ikke så meget trafik, at der er to besøgende, der kan skrive
> til siden samtidig?

Det er det som jeg ikke ved... men efter hvad jeg har læst i PHP
manualen så skulle fopen automatisk "låse" filen og med låse regner
jeg med at det betyder at det ikke ville være sådan et problem som der
er nu.

Det kan godt være det ikke er noget problem når hjemmesiden køre
normalt men det sker for eksempel når jeg skal validere/teste hele
hjemmesiden altså hvor et program kalder alle filerne på hjemmesiden
også åbner den måske 20 sider på 1 sekund eller noget i den stil.


Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste