Topic: Kelios Lenteles uzklausos vienu metu. (mysql)
Sveiki. Taigi turiu tokią problemą.
Yra mysql lentele INFO, kurioje laikomas didelis kiekis informacijos. Ir ta inofrmacija atnaujinama nuolatos, kas 10min. cronjob pagalba.
Kad būtų aiškiau, failas info.php užkraunamas kas 10min. Ir jame atliekami tokie veiksmai:
$uzklausa = @mysql_query("SELECT * FROM info ORDER BY time ASC ");
while($uzklausa1 = mysql_fetch_array($uzklausa)) {
////cia atliekami įvairūs veiksmai UPDATE'inama ta pati lentelė: info
///pvz
$kiek = $uzklausa1['kiekis'] + 100;
mysql_query("UPDATE info SET kiekis='$kiek' WHERE ....."); }
Esmė, jog šį ciklą dėl informacijos gausos krauna apie 20sec.
Ir problema iškyla tada, kaip tuo metu kitame faile, tarkime index.php bandau atlikti kažką pan.:
$uzklausa = @mysql_query("SELECT kiek FROM info WHERE as='as' ");
$uzklausa1 = mysql_fetch_array($uzklausa);
$kiek = $uzklausa1[0] - 30;
mysql_query("UPDATE info SET kiekis='$kiek' WHERE as='as' ");
Tokiu atveju šis mano UPDATE neveikia. T.y laikykim, jog mano minėtas KIEKIS yra lygus 0. Taigi pagal viską, turėtų rezultate būti KIEKIS=70 ,
tačiau jis liekia KIEKIS=100 . Viskas būna gerai, jei nesutampa šios užklausos į vieną laiką, t.y kol vykdomas cronjob ~20sec ciklas..
Kokie būtų pasiūlymai?