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()它会起作用的 PHPsleep
函数采用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()
的人。您是否尝试捕获任何异常?