
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
Asi by bylo vhodné tam dát něco takového, nevím jak se to chová ($otevrikurz bude ta funkce načtení souboru):
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.
To PHP neumí vlákna nebo neblokující I/O operace?
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.
Právě proto se ptám jestli PHP umí vlákna, aby se nečekalo věčně...
Proc vecne? Zkusi to precist treba 3x a pak napise uzivateli chybu.
A zamknuti souboru bude trvat jen chvilicku nebude blokovany pri editaci.