如何在另一个PHP脚本(如更新按钮)的后台运行PHP脚本

时间:2010-02-13 12:03:59

标签: php

当我按下“更新”按钮时,我将如何运行php脚本,然后运行说脚本x1.php(没有回声或其他输出,成功或失败)然后更新当前页面(我知道更新部分可以使用ajax完成,但我不知道如何以及如何让x1.php脚本在后台运行并在完成时触发ajax更新。)

任何正确方向的指针都会很棒:)

7 个答案:

答案 0 :(得分:4)

您可以尝试这样:

<input type="button" onclick="go();" value= "Update" />


function go()
{
    $.ajax(
        {
               type: "POST",
               url: "script x1.php",
               data: data, // data to send to above script page if any
               cache: false,

               success: function(response)
               {
                // update code for your page
               }
         });
}

这将在后台运行您的脚本,然后您还可以更新页面的内容。您可能希望根据需要修改代码。

  

没有回声或其他   输出,成功或失败

上面的脚本应该会发回一些响应,以便能够知道它已经完成运行,否则我恐怕你无法找到何时以及如何脚本结束。

注意:在这里使用JQuery。

答案 1 :(得分:3)

Ajax是100%正确答案。您生成一个HTML页面,向x1.php发出Ajax请求。根据返回的内容,Ajax success方法更新页面。

确切地说,您在JavaScript中使用Ajax方法创建请求,并使用JavaScript更新页面。

以下是一些示例和文档:

答案 2 :(得分:1)

AJAX是“正确”的方向。您应该调用x1.php,并使用它的输出来更新当前页面。小心你的网站应该没有javascript工作。

答案 3 :(得分:0)

你真正要求的是AJAX的全部内容。您只需将一个事件观察者附加到该按钮并运行您的PHP脚本,返回您需要的任何内容。确切的语法取决于您是否使用JavaScript库(jQuery / Prototype等)

答案 4 :(得分:0)

看看我问过的问题。 Return value to browser but still process in PHP

使用ajax发出请求,但让PHP返回一个值,即使它仍然在后台处理。

答案 5 :(得分:0)

您可以在此处使用各种机制。从您的问题来看,我认为“更新”过程预计会比通常的ajax请求花费更长的时间吗?

  • 选项1

    使更新脚本将状态写入数据库,然后通过AJAX轮询更新状态

  • 选项2

    让更新脚本在运行时创建一个锁文件,并在完成后删除锁文件,使用AJAX轮询锁文件的退出

  • 选项3

    如果希望更新脚本快速完成更新,只需回显“成功”或“错误”状态消息,并在成功的AJAX请求中处理它,如Sarfraz建议的那样。

答案 6 :(得分:-2)

只需包含一个.php作为SQL查询,如下所示: mysql_query(“SELECT * FROM table WHERE date&lt; DATE_SUB(NOW(),INTERVAL 8 DAY)”);

只有在该语句为真时才会执行。 :)

在那个.php中,确保不要放任何回声。它将“自动”工作,用户不会注意到任何事情。