Pereiti prie turinio

Padekit su fopen(), kazkodel duomenys dingsta


Rekomenduojami pranešimai

tai va, skaitliukas, kuris pirmoj reiksmej skaiciuoja kiek viso puslapio atvertimu, data siandienos ir siandienos atvertimai, kodas atrodo taip:

	$failas="failas.tt"; 
$simboliu_skaicius = count($failas); 
$stulpelis = file($failas); 

for($i=0; $simboliu_skaicius > $i; $i++){ 
	$laukelis = explode("|", $stulpelis[$i]); 
} 

$laukelis[0]++;
if($laukelis[1]=="$data"){$laukelis[2]++;}
else{$laukelis[1]=$data;$laukelis[2]=1;}

$informacija = "$laukelis[0]|$laukelis[1]|$laukelis[2]";

$duomenys=fopen($failas, "w");  
fwrite($duomenys, "$informacija");  
fclose($duomenys);

 

faile saugoma: 2500|2010-01-06|2500

 

Problema tame, kad po keliu simtu, ar keliu, ar keliolikos atvertimu nusinulina abu skaiciai ir prasideda viskas vel nuo 0|data|0

Manau cia kazkas su vienu metu failo skaitymu ir rasymu...

Nuoroda į pranešimą
Dalintis kituose puslapiuose
tai va, skaitliukas, kuris pirmoj reiksmej skaiciuoja kiek viso puslapio atvertimu, data siandienos ir siandienos atvertimai, kodas atrodo taip:

	$failas="failas.tt"; 
$simboliu_skaicius = count($failas); 
$stulpelis = file($failas); 

for($i=0; $simboliu_skaicius > $i; $i++){ 
	$laukelis = explode("|", $stulpelis[$i]); 
} 

$laukelis[0]++;
if($laukelis[1]=="$data"){$laukelis[2]++;}
else{$laukelis[1]=$data;$laukelis[2]=1;}

$informacija = "$laukelis[0]|$laukelis[1]|$laukelis[2]";

$duomenys=fopen($failas, "w");  
fwrite($duomenys, "$informacija");  
fclose($duomenys);

 

faile saugoma: 2500|2010-01-06|2500

 

Problema tame, kad po keliu simtu, ar keliu, ar keliolikos atvertimu nusinulina abu skaiciai ir prasideda viskas vel nuo 0|data|0

Manau cia kazkas su vienu metu failo skaitymu ir rasymu...

 

Php zinios ne kokios...

Pirma:

$failas="failas.tt"; 
$simboliu_skaicius = count($failas);

 

count - tai funkcija kuri skaiciuoja masivo elementus ,o ne simbolius!

Tam naudojama funkcija strlen.

Antra:

Kam tu skaiciuji vapse $failas tintamojo simbolius (man pasirode ,kad tu tai norejai daryti)? :)

Va sias dvi klaidas isitaisyk ,o tada jai biski suvoki php jau rasi kitas klaidas...

 

P.S patariu pasimokyti mysql.

Redagavo Dmx
Nuoroda į pranešimą
Dalintis kituose puslapiuose
Php zinios ne kokios...

Pirma:

$failas="failas.tt"; 
$simboliu_skaicius = count($failas);

 

count - tai funkcija kuri skaiciuoja masivo elementus ,o ne simbolius!

Tam naudojama funkcija strlen.

Antra:

Kam tu skaiciuji vapse $failas tintamojo simbolius (man pasirode ,kad tu tai norejai daryti)? :)

Va sias dvi klaidas isitaisyk ,o tada jai biski suvoki php jau rasi kitas klaidas...

 

P.S patariu pasimokyti mysql.

 

kam man tas tavo SQLas, kai reikia kazkokio nupiepusio skaitliuko, nori pasakyt, man dabar kokiam varganam serve, kur SQL queriu kiekis ribotas teks jas dar apmazint del to kad nesugebu su failu skaitliuko pakurt? moku as ta SQL, su SQL cia vieni juokai counteri pasidaryt.

 

Kam skaiciuoju failo simbolius? turetu but aisku, kai toliau ciklas eina... Vaziuok i kalnus o ne an manes, ne visi tokie protingi sioj srity...

 

Tuoj paziuresim ka turim nesamones patvarkius

Nuoroda į pranešimą
Dalintis kituose puslapiuose
tai va, skaitliukas, kuris pirmoj reiksmej skaiciuoja kiek viso puslapio atvertimu, data siandienos ir siandienos atvertimai, kodas atrodo taip:

	$failas="failas.tt"; 
$simboliu_skaicius = count($failas); 
$stulpelis = file($failas); 

for($i=0; $simboliu_skaicius > $i; $i++){ 
	$laukelis = explode("|", $stulpelis[$i]); 
} 

$laukelis[0]++;
if($laukelis[1]=="$data"){$laukelis[2]++;}
else{$laukelis[1]=$data;$laukelis[2]=1;}

$informacija = "$laukelis[0]|$laukelis[1]|$laukelis[2]";

$duomenys=fopen($failas, "w");  
fwrite($duomenys, "$informacija");  
fclose($duomenys);

 

faile saugoma: 2500|2010-01-06|2500

 

Problema tame, kad po keliu simtu, ar keliu, ar keliolikos atvertimu nusinulina abu skaiciai ir prasideda viskas vel nuo 0|data|0

Manau cia kazkas su vienu metu failo skaitymu ir rasymu...

 

Pabandyk http://lt.php.net/flock

Nuoroda į pranešimą
Dalintis kituose puslapiuose

	$failas="failas.tt";
$stulpelis = file($failas); 
$simboliu_skaicius = count($stulpelis); 

for($i=0; $simboliu_skaicius > $i; $i++){ 
	$laukelis = explode("|", $stulpelis[$i]); 
} 

$laukelis[0]++;
if($laukelis[1]=="$data"){$laukelis[2]++;}
else{$laukelis[1]=$data;$laukelis[2]=1;}



$informacija = "$laukelis[0]|$laukelis[1]|$laukelis[2]";

$duomenys=fopen($failas, "w");  

if (flock($duomenys, LOCK_EX)) { // do an exclusive lock
		fwrite($duomenys, "$informacija");  
		flock($duomenys, LOCK_UN); // release the lock
			} else {
echo "Couldn't get the lock!";
			}
fclose($duomenys);

 

Na va, pakeiciau kas ponui nepatenkintajam nepatiko. Tai tikrai buvo NIFTEMU su mano klausimu.

Galvojau, kad duomenys dingsta del to kad vienu metu is dvieju failu rasau, galvojau, kad tikrai del to lock'o gali but... Galutinis kodas atrodo taip, bet vistiek, 200 prasuku, einant tolyn tik PYST, ir pasidaro vel 1, 2 ... Buna ir nuo pradziu pasukioju su dviem langais, 1,2,3,4... 1, 2, 3....

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Naudok paprastesni varianta :)

 

<?php
$filename = 'failas.tt';
$failas = fopen($filename, 'r+');
$filesize = @filesize($filename);
$visits = 1;
$newday = date('j');
if ($filesize) {
$data = fread($failas, $filesize);
$data = explode('|', $data);
$visits = $data[0]+1;
$newday = $data[1];
$today = date('j');
if ($today != $data[1]) {
	$visits = 1;
	$newday = $today;
}
}
ftruncate($failas, 0);
rewind($failas);
fwrite($failas, $visits.'|'.$newday);
fclose($failas);

echo $visits;
?>

Redagavo Tech
Nuoroda į pranešimą
Dalintis kituose puslapiuose
Naudok paprastesni varianta :)

 

<?php
$filename = 'failas.tt';
$failas = fopen($filename, 'r+');
$filesize = @filesize($filename);
$visits = 1;
$newday = date('j');
if ($filesize) {
$data = fread($failas, $filesize);
$data = explode('|', $data);
$visits = $data[0]+1;
$newday = $data[1];
$today = date('j');
if ($today != $data[1]) {
	$visits = 1;
	$newday = $today;
}
}
ftruncate($failas, 0);
rewind($failas);
fwrite($failas, $visits.'|'.$newday);
fclose($failas);

echo $visits;
?>

 

Va tvarkingas ,bet klaidu sc :)

Grazu ziureti :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Naudok paprastesni varianta :D

 

<?php
$filename = 'failas.tt';
$failas = fopen($filename, 'r+');
$filesize = @filesize($filename);
$visits = 1;
$newday = date('j');
if ($filesize) {
$data = fread($failas, $filesize);
$data = explode('|', $data);
$visits = $data[0]+1;
$newday = $data[1];
$today = date('j');
if ($today != $data[1]) {
	$visits = 1;
	$newday = $today;
}
}
ftruncate($failas, 0);
rewind($failas);
fwrite($failas, $visits.'|'.$newday);
fclose($failas);

echo $visits;
?>

 

Nu ka as galiu pasakyt... Vistiek tas pats... Refreshinu, echina

1|7

2|7

3|7

...

55|7

 

parefreshinu buski dazniau, po kelis kart sekundei, ir vel pasidaro 1|7, 2|7 .... KAZINAU... :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...