我有php脚本在等待MySQL数据库中的数据时运行一段时间。 问题是,当客户端刷新浏览器时,这似乎不起作用,相反,它一直在等待......
以下代码与循环
<?php
session_start();//i start the session here.
require_once('connections/connections.php');//mysql
function loop_to_get_more_data(){
global $con;
//checking number of connected friends in db...
$check=$con->query("SELECT numfriends FROM SUPERDATATABLE WHERE USERID=$_SESSION[USERID] AND numfriends>0");
if(mysqli_num_rows($check)>0){
//here i do more work and finally exit;
}else{
//loop again...
sleep(3);
loop_to_get_more_data();
return;//required to stop.
}
}loop_to_get_more_data();
exit;//after finshing everything...
现在你可以看到,代码运行完美,但问题是 此循环强制浏览器等待,直到服务器响应请求或在数据存在时退出循环
当客户端刷新浏览器时,浏览器拒绝自我刷新,无论如何都保持相同的状态。
我在这里做错了什么。?
答案 0 :(得分:1)
我认为您正在寻找session_write_close();
功能
<?php
session_start();//please make note of this.
require_once('connections/connections.php');
//NOW CLOSE THE SESSION RIGHT BEFORE ENTERING THIS FUNCTION LOOP
session_write_close();//this does the magic.
function loop_to_get_more_data(){
global $con;
$check=$con->query("SELECT numfriends FROM SUPERDATATABLE WHERE USERID=$_SESSION[USERID] AND numfriends>0");
if(mysqli_num_rows($check)>0){
//more code if any;
}else{
sleep(3);
loop_to_get_more_data();
return;//required to stop.
}
}loop_to_get_more_data();
exit;