PHP - file_get_contents / fwrite - občas se vynuluje soubor – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

PHP - file_get_contents / fwrite - občas se vynuluje soubor – PHP – Fórum – Programujte.comPHP - file_get_contents / fwrite - občas se vynuluje soubor – PHP – Fórum – Programujte.com

 

phpcko
~ Anonymní uživatel
2 příspěvky
16. 1. 2014   #1
-
0
-

Dobrý den,

Na webu používám skript, který slouží jako počítadlo určitých akcí na webu.

$dollarsx = file_get_contents("../../totalR.txt");
$fp = fopen ("../../totalR.txt", "w");
fwrite ($fp, $dollarsx+1);
fclose ($fp);

Zapisuje se tam  často i přes tisíc zápisů +1 za den, ale už dvakrát se mi stalo, že se číselná hodnota v souboru vynulovalo a začalo se počítat od znovu. Čím to může být?

Nahlásit jako SPAM
IP: 88.101.98.–
Kit+15
Guru
16. 1. 2014   #2
-
0
-

#1 phpcko
Je to tím, že se ten soubor nezamyká. Proč vlastně nepoužíváš funkci file_put_contents()? 

<?php
$dollarsx = file_get_contents("../../totalR.txt");
file_put_contents("../../totalR.txt", $dollarsx+1);

Netvrdím, že to je značka ideál, ale už by se ti čítač nulovat neměl.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
phpcko
~ Anonymní uživatel
2 příspěvky
17. 1. 2014   #3
-
0
-

 file_put_contents tedy nevynuluje při dvou zápisech ve stejný čas soubor?
Jde mi tedy především o to aby se soubor nevynuloval, když by občas byly dva zápisy +1 najednou a jeden se ignoroval tak to není takový problém.   

Nahlásit jako SPAM
IP: 88.101.98.–
z
~ Anonymní uživatel
268 příspěvků
17. 1. 2014   #4
-
0
-

Tu nulu dostaneš při čtení (resp. FALSE, nebo prázdný řetězec), pokud právě probíhá zápis.

Kitovo řešení bych rozšířil o test výsledku čtení:

$dollarsx = (int) file_get_contents("../../totalR.txt");
if ($dollarsx > 0) file_put_contents("../../totalR.txt", $dollarsx+1);

Jinak je v PHP na synchronizaci přístupu k souboru funkce flock.

Nahlásit jako SPAM
IP: 78.156.159.–
Kit+15
Guru
17. 1. 2014   #5
-
0
-

#4 z
flock() je v daném případě k ničemu, file_put_contents() ho nepotřebuje.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
z
~ Anonymní uživatel
268 příspěvků
18. 1. 2014   #6
-
0
-

#5 Kit
Tak jo   

Nahlásit jako SPAM
IP: 88.101.8.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

Podobná vlákna

Soubor.php — založil Slipknot

Fwrite... — založil Anonymní uživatel

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý