最佳方式提交一个表单,并保持工作
我有一个PHP页面,用表单,表单提交的变量到开始工作调用几个方案最佳方式提交一个表单,并保持工作
,如果我在同一个标签提交此表PHP脚本,如果通过点击导航栏中的某个元素来更改网址,表单将停止工作。
如果我将表单提交给另一个选项卡,我不能单击原始选项卡中的任何内容,除非管道完成工作。
我如何以最好的方式处理这个问题?
如果你不感兴趣的剧本的“结果”(假设它只是重要的是,它完成)
您可以添加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分钟,那么以同步的方式处理请求可能是一个糟糕的主意,如果你不真的需要这样的话。
我也尝试ajax异步调用,但是如果我改变页面,我调用的脚本完成 – Cristian 2014-10-07 16:21:02
@Christian:Call它是异步的,并将“ignore_user_abort”的值添加到处理文件中。用户将得到即时反馈(*您的请求已计划执行*),脚本将运行,直到完成。 – dognose 2014-10-07 16:22:20
我把async:true放在ajax调用中,而ignore_user_abort(true); set_time_limit(0);如果我尝试更改页面,它将无法工作,直到脚本完成 – Cristian 2014-10-07 16:34:09
在你的数据库中创建一个开关,* 1/0 *为cronjob及时工作 – 2014-10-07 16:16:18