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é.

  1. 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
  2. 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.
  3. 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
  4. To jsem se prave chtel zeptat,jestli je soucasti PHP i knihovna "SHM / IPC"
  5. jestli to je mineno na zdejsi instalaci tak odpoved je ne
  6. No jo, aneb wordovský praktiky tmp...:o). A vobčas tam navíc zůstanou!
  7. 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.

← Zpět na všechna témata