最佳方式提交一个表单,并保持工作

问题描述:

我有一个PHP页面,用表单,表单提交的变量到开始工作调用几个方案最佳方式提交一个表单,并保持工作

,如果我在同一个标​​签提交此表PHP脚本,如果通过点击导航栏中的某个元素来更改网址,表单将停止工作。

如果我将表单提交给另一个选项卡,我不能单击原始选项卡中的任何内容,除非管道完成工作。

我如何以最好的方式处理这个问题?

+0

在你的数据库中创建一个开关,* 1/0 *为cronjob及时工作 – 2014-10-07 16:16:18

如果你不感兴趣的剧本的“结果”(假设它只是重要的是,它完成)

您可以添加ignore_user_abort(true)到脚本处理形式:http://php.net/manual/en/function.ignore-user-abort.php

然后,无论用户切换页面,PHP都会完成脚本。

如果您需要脚本的结果,您需要实现一些异步JavaScript来跟踪当前的处理状态 - 或让用户等待完成。

根据该脚本将运行多久,你也许还需要增加时间限制: http://php.net/manual/en/function.set-time-limit.php

但请记住,大部分用户会等到他们收到提交的一些视觉反馈。因此,如果需要10分钟,那么以同步的方式处理请求可能是一个糟糕的主意,如果你不真的需要这样的话。

+0

我也尝试ajax异步调用,但是如果我改变页面,我调用的脚本完成 – Cristian 2014-10-07 16:21:02

+0

@Christian:Call它是异步的,并将“ignore_user_abort”的值添加到处理文件中。用户将得到即时反馈(*您的请求已计划执行*),脚本将运行,直到完成。 – dognose 2014-10-07 16:22:20

+0

我把async:true放在ajax调用中,而ignore_user_abort(true); set_time_limit(0);如果我尝试更改页面,它将无法工作,直到脚本完成 – Cristian 2014-10-07 16:34:09