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

时间:2011-08-28 11:20:43

标签: php android mysql

  

可能重复:
  Php mysql to do task after 30 seconds

有没有办法让mysql_query脚本在访问php网站30秒后执行。

这将是一个移动设备,特别是Android设备。在我的用户点击提交后,我希望mysql_query脚本在30秒后运行。

6 个答案:

答案 0 :(得分:1)

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

但是,您可以创建某种队列(例如在数据库中)并让后台工作程序处理队列。这可能是一个每分钟由一个cron作业调用的PHP脚本(但它可能会在60秒后执行,但很容易实现)或者在后台运行的服务器上的守护程序(硬件(呃)实现并且你需要访问权限)到服务器)。

答案 1 :(得分:1)

您可以使用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);
});

答案 2 :(得分:0)

你不需要那个。
执行带有延迟的SQL查询没有一个理由 马上运行吧。

答案 3 :(得分:0)

我认为您需要使用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);
}

然而,我不是javascript专家,这只是我的头脑。

答案 4 :(得分:0)

此处提出的Javascript选项不安全,因为如果用户关闭浏览器,则永远不会执行回调。

如果你真的需要在30秒后执行脚本,那么使用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:我无法理解为什么你需要它,也许你应该重新设计你的应用程序。

答案 5 :(得分:0)

如何重新考虑问题 - 您希望能够找到30秒前点击按钮的所有用户吗?

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

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

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