A PHP értelmezés több szálon fut?
Sziasztok!
Az érdekelne, hogy a PHP fájlok értelmezése több szálon fut-e?
Gyakorlatban:
A vázolt esetben előfordulhat az, hogy az INSERT parancsnál már nem aktuális a fetch['sorszam'] értéke? Nagyszámú kérések, terhelés esetén.
(Az autoincrement erre a "sorszam" oszlopra nem alkalmazható!)
Ha ez a hibalehetőség előfordulhat, hogyan védhető ki?
■ Az érdekelne, hogy a PHP fájlok értelmezése több szálon fut-e?
Gyakorlatban:
$query = mysql_query("SELECT sorszam FROM fontos_adatok WHERE tulaj = "én" ORDER BY Id DESC LIMIT 1");
$fetch = mysql_fetch_array($query);
/* A végrehajtás innen átadódhat-e egy másik szálra, ami éppen a "fontos_adatok" táblát írja?*/
@mysql_query("INSERT INTO fontos_adatok VALUES ('".(fetch['sorszam'] + 1)."', 'stb', 'stb')");
$fetch = mysql_fetch_array($query);
/* A végrehajtás innen átadódhat-e egy másik szálra, ami éppen a "fontos_adatok" táblát írja?*/
@mysql_query("INSERT INTO fontos_adatok VALUES ('".(fetch['sorszam'] + 1)."', 'stb', 'stb')");
A vázolt esetben előfordulhat az, hogy az INSERT parancsnál már nem aktuális a fetch['sorszam'] értéke? Nagyszámú kérések, terhelés esetén.
(Az autoincrement erre a "sorszam" oszlopra nem alkalmazható!)
Ha ez a hibalehetőség előfordulhat, hogyan védhető ki?
Nem fut több szálon. Viszont
igen, bar nem tobb szalon, de
a fenti problemara tobb megoldas is van:
Tyrael
Lock és/vagy tranzakció
fejben tisztázz
Nekem a bőröm a "select sorszam, insert sorszam+1" jellegű dolgoktól mindig kicsit lúdbőrös lesz. Ne érts félre, lehet hogy indokolt az esetedben az alkalmazott technika. A példádból nem sok minden derül ki, így ezt neked kell eldöntened. A korábban írtak, mind hasznos infók a témakörben, de akárhogy is döntesz, a megvalósítás után egy kis idővel gondold át újra az egészet, lehet hogy később nem is fogsz ilyen helyzetbe kerülni.