Скрипт автоставок. первый круг все нормально работает, но последующие автоставки сбиваются к примеру есть три пользователя, когда времени остается до окончания 3 секунды, то срабатывает автоставка и время вновь повышается до 10 секунд. почему сбивается цикл работы к примеру срабатывает 1 автоставка и затем сразу же через секунду 2-я автоставка, хотя должна сработать только через 7 секунд а из-за этого 3-я автоставка запускается не через 7 секунд после второй а аж через 14 секунд. Этот скрипт выполняется каждую секунду с момента запуска Подскажите где я ошибся в коде ? Вот код:
function auto()
{
global $DB;
DeleteABNol();
$bidout=false;
$Fetch_auc=$DB->Query("SELECT ID, CURRENT_USER_ID, LAST_TIMESPAN_BID FROM auc_lots WHERE STATUS=1");
while($auc=$Fetch_auc->Fetch())
{
$cuser=$auc['CURRENT_USER_ID'];
$time=$auc['LAST_TIMESPAN_BID'];
$curpr=$auc['CURRENT_PRICE'];
$realpr=$auc['REAL_PRICE'];
$time_to_bid=($time+10);
$Fetch_Autobid=$DB->Query("SELECT*FROM auto_bid WHERE BIDDED=0 ORDER BY DATE_CREATE ASC");
while ($auto=$Fetch_Autobid->Fetch())
{
if (!$auto){}
if (!$bidout)
{
$user=$auto['IDUSER'];
$aucid=$auto['IDLOT'];
$rand=$auto['RND'];
$bids=$auto['BIDS'];
$type=$auto['type'];
$bidded=$auto['BIDDED'];
$isbid=$DB->Query('SELECT ID FROM auc_lots WHERE CURRENT_USER_ID='.intval($user).' AND ID='.intval($aucid).' LIMIT 1');
if ($cuser!=$user)
{
if ($time_to_bid-$rand==time())
{
$bidout=true;
$DB->PrepareFields("auto_bid");
//$biddar=array('BIDDED'=>intval(1));
//$DB->UPDATE('auto_bid',$biddar, 'WHERE IDUSER='.intval($user).' AND IDLOT='.intval($aucid));
$DB->StartTransaction();
$dbLot = $DB->Query("SELECT CURRENT_PRICE auc_lots WHERE ID=".intval($aucid));
$dbLotRes=$dbLot->Fetch();
$cur_price=intval($dbLotRes['CURRENT_PRICE'])+10;
$DB->PrepareFields("auc_lots");
$Arr_to_up=array(
'CURRENT_USER_ID' => intval($user),
'CURRENT_PRICE' => intval($cur_price),
'LAST_TIMESPAN_BID'=>intval(time()),
'ISMAN' =>intval(1)
);
$DB->Update('auc_lots',$Arr_to_up,"WHERE ID=".intval($aucid),$err_mess.__LINE__);
$cur_bids=$bids-10;
$arr=array("BIDS"=>intval($cur_bids),
'DATE_CREATE'=>intval(time()));
$DB->UPDATE("auto_bid",$arr, "WHERE IDUSER=".intval($user)." AND IDLOT=".intval($aucid), $err_mess.__LINE__);
$ArrFieldForHistory=array(
'ID_LOT' => intval($aucid),
'ID_USER' => intval($user),
'CURRENT_PRICE' => intval($cur_price));
$DB->Insert("auc_history",$ArrFieldForHistory, $err_mess.__LINE__);
if (strlen($err_mess)<=0)
{
$DB->Commit();
}
else
{
$DB->Rollback();
}
}
}
}
}
}