获取一个mysql_查询脚本,在访问php站点30秒后执行

获取一个mysql_查询脚本,在访问php站点30秒后执行,php,android,mysql,Php,Android,Mysql,可能重复: 有没有办法让mysql_查询脚本在访问php站点30秒后执行 这将出现在移动设备上,特别是android设备上。用户单击submit后,我希望mysql_查询脚本在30秒后运行。直接否,因为PHP是基于请求的,这意味着在请求之后不再运行任何内容 但是,您可以创建某种队列(例如在数据库中),并让后台工作人员处理队列。这可以是cron作业每分钟调用一次的PHP脚本(但可能会在60秒后执行,但很容易实现),也可以是后台运行的服务器上的deamon(很难实现,您需要访问服务器)。您可以使用

可能重复:

有没有办法让mysql_查询脚本在访问php站点30秒后执行


这将出现在移动设备上,特别是android设备上。用户单击submit后,我希望mysql_查询脚本在30秒后运行。

直接否,因为PHP是基于请求的,这意味着在请求之后不再运行任何内容


但是,您可以创建某种队列(例如在数据库中),并让后台工作人员处理队列。这可以是cron作业每分钟调用一次的PHP脚本(但可能会在60秒后执行,但很容易实现),也可以是后台运行的服务器上的deamon(很难实现,您需要访问服务器)。

您可以使用javascript,例如jQuery,这可能类似于:

$('#form').submit(function(e) {
    e.preventDefault(); // stop form from submitting when submit is clicked
        setTimeout(function() { // set a 30 second timer to make an ajax request to your php script
        $.ajax('mysqlscript.php');
    }, 30000);
});
你不需要这个。
延迟执行SQL查询没有单一原因。

立即运行它。

我认为您需要使用Javascript来实现这一点

例如:使用setTimeout()函数

$query4=mysql_query("select id, price from pricelist where id='$result3[id]'");
$result4=mysql_query($query4);

// **Example:**
function queryTimeout(){
  var t=setTimeout("doQuery()",30000);<br />
}

function doQuery(){
  $query4=mysql_query("select * from table");
  $result4=mysql_query($query4);
}
$query4=mysql\u query(“从pricelist中选择id,price,其中id='$result3[id]'”;
$result4=mysql\u查询($query4);
//**例如:**
函数queryTimeout(){
var t=setTimeout(“doQuery()”,30000);
} 函数doQuery(){ $query4=mysql_查询(“从表中选择*); $result4=mysql\u查询($query4); }

然而,我不是javascript专家,这只是我的想法。

这里建议的javascript选项不安全,因为如果用户关闭浏览器,将永远不会执行回调

如果您真的需要在30秒后执行脚本,那么使用cron作业不是一个选项,但是如果您需要在“一段时间后”执行脚本,则可以使用cron作业。创建守护进程是最好的选择,但它很难实现,并且不是最“兼容”的选择

试试这个(我还没有测试过!!):要进行简单的AJAX调用或完整的页面访问,请在页面完成时进行另一个AJAX调用:

// This is the page you load and 30 seconds after it is loaded you want to call mysql
....
$(document).ready(function() {
   $.ajax({
     url: "callMYSQL.php",
     async: true
   });
});
当文档被加载时(如果您加载了一个新页面,您可以通过AJAX调用它,您只需调用AJAX两次),它将调用callMYSQL.php。这个PHP文件必须等待30秒(sleep(30)),然后执行您需要的任何操作

注意:此解决方案需要您增加PHP脚本的活动时间。
注2:我不明白你为什么需要它,也许你应该重新设计你的应用程序。

重新思考一下这个问题如何-你想找到30秒前点击按钮的所有用户,对吗

执行查询不需要等待30秒:当他们单击按钮时,您立即执行SQL查询,并更新用户表上名为time_clicked的字段

然后,您可以通过执行查询找到所需的用户:

<?php
    mysql_query("SELECT * FROM users where time_clicked < '" .
        date('Y-m-d h:i:s',strtotime('-30 seconds')) . "'");
?>

或者像user916336所说的,您也可以使用AJAX只要用户30秒后仍在您的页面/应用程序上。请修改您的原始帖子,而不是重复!