在表单提交后台功能php运行

时间:2009-05-22 17:39:17

标签: php javascript background server-side

我正在寻找一种方法来启动表单提交功能,不会让浏览器窗口等待结果。

实施例: 用户填写表单并按提交,表单中的数据通过javascript进入数据库,php中的一个函数将需要几秒钟才会启动,但我不希望用户等待该函数的结束。我希望能够将他带到另一个页面并让该功能完成其服务器端。

有什么想法吗?

由于


感谢所有回复......

我得到了ajax部分。但我不能调用ajax并让浏览器移动到另一个页面。

这就是我想要的。

- 用户填写表格并提交 -Result从表单传递到数据库 - 令人讨厌的过程功能开始 -user继续访问网站的其余部分,与“长期烦人的流程功能”

的状态无关

顺便说一下,有人建议之前。不,这不能通过cron job来完成

5 个答案:

答案 0 :(得分:3)

使用AJAX调用php脚本,在脚本顶部打开ignore_ user_ abort

ignore_user_abort(true);

这样,如果他们离开页面,脚本将继续在后台运行。您也可以使用

set_time_limit(0);

设置时间限制,如果您知道脚本需要一段时间才能完成,则非常有用。

答案 1 :(得分:1)

最常见的方法是:

exec("$COMMAND > /dev/null 2>&1 &");

答案 2 :(得分:1)

啊,好吧,你基本上要问的是,PHP是否支持线程,而一般的答案是否定的......然而......

你可以通过一些技巧来模仿这种行为,其中一个突出显示在上面,并涉及分叉到服务器上的一个单独的进程,这可以通过多种方式实现,包括;

exec()

方法。你也可以看看这里;

PHP threading

我也看到人们试图在脚本中途强制刷新输出缓冲区,试图强制将响应强制回客户端,我不知道这种方法有多成功,但也许其他人会有一些信息那一个。

答案 3 :(得分:0)

这正是AJAX(异步JavaScript + XML的简写)的用途;

AJAX Information

它允许您使用客户端代码进行编码,并向服务器发送异步请求,这样用户的浏览器就不会被整个页面请求所干扰。

网上有很多关于AJAX的信息,所以深吸一口气,然后去谷歌搜索!

答案 4 :(得分:0)

听起来你想要使用AJAX(Asynchronous Javascript和XML - google)提供的一些功能。

基本上,你会有一个包含内容的页面。当用户单击按钮时,javascript将用于将数据POST到服务器并开始处理。同时,该javascript可能从服务器加载页面然后显示它(例如,加载数据,然后用该新页面替换DIV的内容。)

这种的东西是AJAX背后的前提,当你有一个网页同时做多个事情时,你会看到它。

值得注意:这并不意味着脚本“在服务器后台运行”。您的Web浏览器仍在与Web服务器保持连接 - 这意味着代码在客户端端的“后台”中运行。而“背景”我们的意思是“与其他HTTP请求并行处理HTTP请求,以给出”后台“运行过程的感觉”