Выполнение кода несколько раз

140
24 ноября 2020, 08:40

Мне нужно выполнять php скрипт несколько раз, количество рандомно генерится. Вставляю то что нужно циклично выполнять в цикл for, но код почему-то выполняется 1 раз и все

include_once('db_connect.php');
    function create_orders($mysqli,$user_id,$contest_id,$price,$amount,$name_val,$name_prod,$type_operation){
        $Wallets_user = $mysqli->query("SELECT * FROM `wallets` WHERE user_id=$user_id AND contest_id = $contest_id");
        $Wallets_user_row = $Wallets_user->fetch_assoc();
        $total = $amount * $price;
        $commission = 0.0001 * $amount * $price;
        if ($type_operation == 'BUY'){
            $name_val_free  = "bal" . mb_strtolower($name_val);
            $name_val_in_orders = "bali" . mb_strtolower($name_val);
            $val_free_new  = ($Wallets_user_row[$name_val_free] - ($total+$commission));
            $val_in_orders_new = ($Wallets_user_row[$name_val_in_orders] + ($total+$commission));
            if (($val_free_new >= 0) && ($val_in_orders_new >= 0)) {
                $DTTM_create_order = time(); 
                $mysqli->query("INSERT INTO `orders` (`user_id`,`contest_id`,`type_operation`,`name_val`,`name_prod`,`price`,`amount`,`total`,`commission`,`dttm_create_order`,`status`) VALUES ('$user_id','$contest_id','$type_operation','$name_val','$name_prod','$price','$amount'*100000000,'$total','$commission','$DTTM_create_order','o')");
                $mysqli->query("UPDATE `wallets` SET $name_val_free=$val_free_new, $name_val_in_orders=$val_in_orders_new WHERE user_id=$user_id AND contest_id = $contest_id" ); 
            }
        }
        if ($type_operation == 'SELL'){
            $name_prod_free  = "bal" . mb_strtolower($name_prod);
            $name_prod_in_orders = "bali" . mb_strtolower($name_prod);
            $prod_free_new  = ($Wallets_user_row[$name_prod_free] - $amount);
            $prod_in_orders_nem = ($Wallets_user_row[$name_prod_in_orders] + $amount);
            if (($prod_free_new >= 0) && ($prod_in_orders_nem >= 0)) {
                $DTTM_create_order = time();
                $mysqli->query("INSERT INTO `orders` (`user_id`,`contest_id`,`type_operation`,`name_val`,`name_prod`,`price`,`amount`,`total`,`commission`,`dttm_create_order`,`status`) VALUES ('$user_id','$contest_id','$type_operation','$name_val','$name_prod','$price','$amount'*100000000,'$total','$commission','$DTTM_create_order','c')");
                $mysqli->query("UPDATE `wallets` SET $name_prod_free=$prod_free_new, $name_prod_in_orders=$prod_in_orders_nem WHERE user_id=$user_id AND contest_id = $contest_id");
            }
        }
    }

$num= rand(2, 5);
for ($i = 0; $i < $num; $i++) {
    include_once('db_connect.php');
$req = $mysqli->query("SELECT * FROM `coinInfo` WHERE coinName = '111'");
while($row = $req->fetch_assoc()) {
$ask = $row["ask"];
$bid = $row["bid"];
}
$operation = array("BUY", "SELL");
$rand_keys = array_rand($operation);
function random_float ($min,$max) {
   return ($min+lcg_value()*(abs($max-$min)));
}

$contest_id     = 1;
$price          = random_float($bid,$ask);;
$amount         = random_float(1,4);
$name_val       = '222';
$name_prod      = '333';
$type_operation = $operation[$rand_keys];
$sesion_id      = 299;
$Responce=create_orders($mysqli,$sesion_id,$contest_id,$price,$amount,$name_val,$name_prod,$type_operation);  
}
Answer 1

Вы пытаетесь несколько раз вызвать include_once('db_connect.php');. Это бесполезно, include_once(script) выполняется только один раз, независимо от того, сколько раз вызывается в коде.

Выражение include_once включает и выполняет указанный файл во время выполнения скрипта. Его поведение идентично выражению include, с той лишь разницей, что если код из файла уже один раз был включен, он не будет включен и выполнен повторно и вернёт TRUE. Как видно из имени, он включит файл только один раз.

include_once может использоваться в тех случаях, когда один и тот же файл может быть включен и выполнен более одного раза во время выполнения скрипта, в данном случае это поможет избежать проблем с переопределением функций, переменных и т.д.

Документация.

Замените на include('db_connect.php').

READ ALSO
Как получить картинку из другого поста вордпресс

Как получить картинку из другого поста вордпресс

Всем здрастеЕсть новая задачка, и снова со звездочкой

90
Вопрос по Telegram API

Вопрос по Telegram API

Есть приватный канал, в котором числиться мой основной телеграм аккаунт, я хочу сделать пересылку сообщений из этого канала, в другой канал,...

148
Как получить имя файла в котором работаешь?

Как получить имя файла в котором работаешь?

Здраствуйте! Подскажите, могу ли я достать имя файла в котором работаюДопустим, я работаю в файле index

131
Cron чаще чем 1 минута

Cron чаще чем 1 минута

Есть хостинг с Cpanel, есть ли возможность поставить выполнение php скриптов чаще чем 1 минута?

96