我有一个PHP页面,带有一个表单,表单提交变量到PHP脚本,开始调用多个程序
如果我在同一标签中提交此表单,如果通过单击导航栏中的某个元素更改网址,表单将停止工作。
如果我将表单提交到另一个标签,除非管道完成工作,否则我无法点击原始标签中的任何内容。
我如何以最好的方式处理这个问题?
答案 0 :(得分:2)
如果你对剧本的“结果”不感兴趣(让我们说它非常重要,那就完成了)
您可以将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分钟,那么以同步方式处理请求可能是个坏主意,如果你真的不需要那样的话。