kolize
7 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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.