kolize

Cuz fsichni,
nevite nahodou nekdo, jestli je v PHP nutny resit kolize (jako ze dva uzivatele zaroven pusti stejnej skript - ten ma za ukol zapsat neco do souboru - dve spusteny instance stejnyho skriptu se pak hadaji, kdo ze tam vlastne bude zapisovat a vysledkem je mishmash)?

Vzhledem k tomu, ze PHP je navrzeny pro web, bych cekal, ze to bude nejak osetreny interne, ale clovek nikdy nevi...

Dik moc
zapis do souboru si musis pohlidat. existuje na to sice osetreni v php (rtm, especially http://www.php.net/manual/cs/function.flock.php), nefunguje to vzdy ale tak jak by jsi potreboval... neco uz se tu pred nekolika tydny/mesici resilo, zkus pohledat...

m.s.
Pokud vice threadu zaraz zapisuje do stejneho stremu je v tom vzdy bordel. jistym resenim je snad jen vytvorit tmp soubor ktery se pri pouziti napr fopen vytvori a po flose se smaze..
pak dat do smycky, ze se soubor nesmi otevrit dokud ten tmp existuje
To jsem se prave chtel zeptat,jestli je soucasti PHP i knihovna "SHM / IPC"
jestli to je mineno na zdejsi instalaci tak odpoved je ne
No jo, aneb wordovský praktiky tmp...:o).
A vobčas tam navíc zůstanou!
Jeste mas k dispozici MySQL s tabulkou typu HEAP.

UPDATE kolize SET `lock`=1 where `lock`=0;

- pokud mysql_affected_rows() vrati 1, ziskal jsem vylucny pristup.

UPDATE kolize SET `lock`=0 where `lock`=1;

- uvolni pristup.

Dale exisuje nastroj LOCK primo v MYSQL, ale nevim jak funguje, a zda funguje zde.

Ja pouzivam pro spousteni v skriptu v urcity cas tento zapis.

UPDATE startat SET `nextstart`=NOW()+INTERVAL 1 HOUR WHERE `nextstart`>NOW()

pokud mysql_affected_rows() vrati 1, je cas spustit script, a zaroven mam jistotu, ze script bude spusten pouze v jednom vlakne. Tohle spousteni v urcity cas predpoklada castou navstevnost. Tenhle test pak lze umistit do nejake spolecne hlavicky vsech stranek.