Autor Zpráva
Ráďa
Profil *
Jako obvykle se zeptám jako hlupák.

Na své stránky mám připrabený skript:

if ($ucastnik!="")
{
$celek="<P CLASS=\"online-červený\">$ucastnik</P>";
$soubor=fopen ('data.inc','a');
fwrite ($soubor, $celek);
fclose ($soubor);
mysql_query ("insert into Tabulka (Heslo) values ('".$_POST["Heslo"]."');", $link);
}


Skriptem potřebuji zapsat údaj do souboru .inc a současně do MySQL databáze. Můj dotaz se týká víceméně jen zápisu do souboru. Pakliže budou návštěvníci webu zadávat údaje postupně, vše bude samozřejmě fungovat bez kolize. Jakožto laika by mě však zajímalo, zda by v extrémní situaci, pokud by téměř v jeden okamžit odeslalo údaje k zápisu třeba dvacel lidí současně, nemohlo dojít k chybě v zápisu a jednotlivé zápisy, resp. jejich části, by se nemohly navzájem pomíchat (část prvního-část druhého-zbytek prvního apod.).
TomášK
Profil
Z dokumentace:
Note: If handle was fopen()ed in append mode, fwrite()s are atomic (unless the size of string exceeds the filesystem's block size, on some platforms, and as long as the file is on a local filesystem).

Atomic znamená, že se to provede v jednom kroku, naráz - tedy nemůže dojít ke kolizi, i když tam bude 20 lidí naráz.
AM_
Profil
Navíc mám pocit, že jakýkoliv pro zápis otevřený soubor jedním skriptem by měl být v tu chvíli pro ostatní uzamčený.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: