Php 在sleep()函数不起作用的循环中插入查询

Php 在sleep()函数不起作用的循环中插入查询,php,mysqli,Php,Mysqli,我有一个带有sleep()函数的while循环,如下所示: $employee = mysqli_query( $conn , "SELECT emp_id,emp_name FROM employee WHERE DATE(datetime) = '$date' " ); if(mysqli_num_rows($employee) > 0){ while ($row = mysqli_fetch_array($em

我有一个带有
sleep()
函数的while循环,如下所示:

$employee = mysqli_query( $conn , "SELECT emp_id,emp_name FROM employee 
                      WHERE DATE(datetime) = '$date' " );

    if(mysqli_num_rows($employee) > 0){

        while ($row = mysqli_fetch_array($employee)) {

            $emp_id        = $row['emp_id']; 
            $emp_name      = $row['emp_name'];  

            $number = mysqli_query( $conn ,"SELECT phone_number FROM emp_phone_number 
                                 WHERE emp_id = '$emp_id' ");

            if(mysqli_num_rows($number) > 0){

                while ($row2 = mysqli_fetch_array($number)) {
                    sleep(2);
                  }

            }           
                mysqli_query($conn , " INSERT INTO `emails`(`emp_id`, `email`) VALUES ('$emp_id','hello') ");

        }

    }

如果没有
sleep()
函数,插入查询工作正常。但是当我启用
sleep()
函数时,它不工作。请告诉我原因。

在哪里使用mysqli\u connect()打开数据库连接?这可能是由于Mysql连接超时,因为您每2秒钟就有一次睡眠。在mysqli\u查询(“插入查询”)之前尝试使用mysqli\u connect()它会起作用的

PHP
sleep
函数采用
int
参数,该参数是执行应休眠的秒数。
您可以选择为每个员工的每个数字睡眠2秒。
我认为您的代码不能“工作”的原因是由于
sleep
调用导致您的执行时间太长,以至于您永远看不到它完成


老实说,我不明白为什么在这种情况下你会想使用
sleep
功能,而且如果员工有一个或多个数字,你只想睡几秒钟,这看起来很奇怪…

有几个人建议超时错误。这似乎是可能的。我会尝试捕捉任何异常,以了解到底发生了什么

$employee = mysqli_query( $conn , "SELECT emp_id,emp_name FROM employee 
                      WHERE DATE(datetime) = '$date' " );
try{
    if(mysqli_num_rows($employee) > 0){

        while ($row = mysqli_fetch_array($employee)) {

            $emp_id        = $row['emp_id']; 
            $emp_name      = $row['emp_name'];  

            $number = mysqli_query( $conn ,"SELECT phone_number FROM emp_phone_number 
                                 WHERE emp_id = '$emp_id' ");

            if(mysqli_num_rows($number) > 0){

                while ($row2 = mysqli_fetch_array($number)) {
                    sleep(2);
                  }

            }           
                mysqli_query($conn , " INSERT INTO `emails`(`emp_id`, `email`) VALUES ('$emp_id','hello') ");

        }

    }
}
catch(\Exception $e){
    die($e->getMessage());
}

为什么要在这种情况下使用sleep函数?我的第一个猜测是SQL查询出现了某种超时。您可能是第一个尝试在MySQL查询循环中使用
sleep()
的人。您是否尝试捕获任何异常?