2012-06-23 2 views
0

Я работаю над красивым небольшим приложением. Я делаю счетчик Tick, чтобы подсчитать, сколько раз программа запускается. Тем не менее, случайным образом он перестает вводить данные, например, 1355 ... Я должен заставить его продолжать работать до тех пор, пока он не достигнет 5000. Но иногда он переходит к 5002 ... Потерянный на этом тоже ... Я бы предпочел цикл чтобы бежать вечно до тех пор, пока оно не прекратится. Если кто-нибудь может мне помочь, вы получите немного cookie. В заключение, моя главная проблема заключается в постоянном размещении данных в базе данных с произвольными остановками.База данных MySQL случайно останавливает прием данных?

while($run && $dataA['StateOfBot'] == 1){ 
    if($dataA['Tick'] >= 5000){ 
     mysql_query("UPDATE state SET StateOfBot = 0 WHERE ID = 1;"); 
    } 
    $dataA['Tick'] = $dataA['Tick'] + 1; 
    mysql_query("UPDATE state SET Tick = '".$dataA['Tick']."' WHERE ID = 1;"); 
    $data = mysql_query("SELECT * FROM state"); 
    $dataA = mysql_fetch_array($data); 
} 
+0

Проблема с более чем 5000 пахнет проблемой синхронизации. Если в этот раздел кода входит несколько потоков, поведение может возникнуть. Почему бы не сделать этот код критическим разделом? – rsan

+0

Что такое критический раздел? У вас есть сайт с примером? – NateAGeek

+0

Забудьте об этом, похоже, что скрипты PHP - это один поток, поэтому мое предположение не может быть проблемой – rsan

ответ

0

Я думаю, что ваш код довольно глючный

while($run && $dataA['StateOfBot'] == 1){ 
    if($dataA['Tick'] >= 5000){ 
     mysql_query("UPDATE state SET StateOfBot = 0 WHERE ID = 1;"); 
     break; //get out of the loop 
    } 
    $dataA['Tick'] = $dataA['Tick'] + 1; 
    mysql_query("UPDATE state SET Tick = '".$dataA['Tick']."' WHERE ID = 1;"); 
    $data = mysql_query("SELECT onefield_only FROM state"); 
    $dataA = mysql_fetch_array($data); 
} 

Я попытался исправить это немного. Для выхода из цикла вам понадобится инструкция break.

Смежные вопросы