Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP: zápis do souboru - co se stane když soubor současně začne někdo číst?

Zdravím,

potřeboval bych vědět, zda může dojít k vymazaní souboru, když do souboru bude zrovna někdo zapisovat (přes funkci fwrite() v PHP) a současně ho bude chtít někdo číst.

Jedná se o to, že dělám eshop ve kterém bude nabízené zboží i v eurech. Někdo si zobrazí produkt a napíše mu to kolik stojí kč a kolik euro. Kurz eura se bude načítat ze souboru a tento kurz bude admin měnit v administračním centru. Tzn. může se stát, že bude chtít zapsat nový kurz a současně si někdo bude na stránkách načítat nějaký produkt, takže může chtít v tu chvíli z toho souboru číst. Je možné, aby došlo k chybě?
Vím, že databáze si toto obstarává sama, ale přijde mi zbytečné zakládat další tabulku v databázi kvůli jednomu číslu.

Díky

Předmět Autor Datum
Asi by bylo vhodné tam dát něco takového, nevím jak se to chová ($otevrikurz bude ta funkce načtení…
marekdrtic 31.08.2008 17:18
marekdrtic
To PHP neumí vlákna nebo neblokující I/O operace? :))
MaSo 31.08.2008 17:33
MaSo
Zalezi na tm, jak je aplikace napsana. Pokud je napsana inteligentne, bude (a musi) soubor blokovan…
Jan Fiala 31.08.2008 17:40
Jan Fiala
Právě proto se ptám jestli PHP umí vlákna, aby se nečekalo věčně...:-)
MaSo 31.08.2008 17:46
MaSo
Proc vecne? Zkusi to precist treba 3x a pak napise uzivateli chybu. A zamknuti souboru bude trvat je… poslední
Jan Fiala 31.08.2008 17:55
Jan Fiala

Asi by bylo vhodné tam dát něco takového, nevím jak se to chová ($otevrikurz bude ta funkce načtení souboru):

if(!$otevrikurz)
{
$kurz = "25" //Nějakou defaultní hodnotu, kdyby se to náhodou poto..
}
else
{
//tady ať si to dělá co chce
}

Dalším řešením by bylo tam dát nějakou CRON úlohu, do jednoho souboru by sis vložil ten kurz a třeba o půlnoci by to přepsalo ten pravý soubor.

Zalezi na tm, jak je aplikace napsana. Pokud je napsana inteligentne, bude (a musi) soubor blokovan pouze po dobu zapisu, ne po celou dobu, co admin edituje.
A inteligentni aplikace, kdyz nemuze precist soubor, vi, ze do nej zrovna nekdo zapisuje, takze par ms pocka a zkusi to precist znovu.

Zpět do poradny Odpovědět na původní otázku Nahoru