Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
页面刷新后的AJAX和PHP_Php_Ajax - Fatal编程技术网

页面刷新后的AJAX和PHP

页面刷新后的AJAX和PHP,php,ajax,Php,Ajax,我正在对一个需要很长时间才能运行的PHP脚本进行AJAX调用。现在,假设运行需要20分钟。还假设我刷新或关闭了启动调用的网页。我的问题是: 我的PHP脚本停止运行了吗 如果它继续运行,我如何在刷新页面后强制将响应返回到页面 谢谢 *************更新************* 有人问我为什么要花很长时间写剧本。我认为不解释以下内容是我的错: a。此脚本仅对站点管理员可用,对一般公众不可用 b。此脚本将执行一些繁重的操作,例如数据操作和数据库相关的内容,并且需要很长时间才能运行 c。我正

我正在对一个需要很长时间才能运行的PHP脚本进行AJAX调用。现在,假设运行需要20分钟。还假设我刷新或关闭了启动调用的网页。我的问题是:

我的PHP脚本停止运行了吗

如果它继续运行,我如何在刷新页面后强制将响应返回到页面

谢谢

*************更新*************

有人问我为什么要花很长时间写剧本。我认为不解释以下内容是我的错:

a。此脚本仅对站点管理员可用,对一般公众不可用

b。此脚本将执行一些繁重的操作,例如数据操作和数据库相关的内容,并且需要很长时间才能运行


c。我正在使用AJAX,这样我仍然可以返回主页面,使用微调器显示脚本正在运行,而脚本实际上在后端运行,回调函数将删除微调器并显示一条成功/失败状态的消息。

否它将停止运行

您应该使用cron作业来运行一个需要20分钟的脚本


别忘了为该页面设置至少20分钟的时间限制

不,它将停止运行

您应该使用cron作业来运行一个需要20分钟的脚本

别忘了为该页面设置至少20分钟的时间限制

我的PHP脚本停止运行了吗? 是的,如果浏览器断开连接,PHP将停止执行,刷新/关闭时将断开连接。您可以使用ignore\u user\u aborttrue来防止这种情况,但我认为这并不是您想要的最佳选择

如果它继续运行,我如何在刷新页面后强制将响应返回到页面? 否由于连接已断开,因此没有可向其发送响应的内容。当ajax调用长进程时,将其作为后台进程调用更合适,并立即返回响应,让后台进程继续工作。您可以使用常规ajax调用来查询流程是否完成,例如在完成时更新数据库

从:

但是,默认行为是在远程客户端断开连接时中止脚本

我的PHP脚本停止运行了吗? 是的,如果浏览器断开连接,PHP将停止执行,刷新/关闭时将断开连接。您可以使用ignore\u user\u aborttrue来防止这种情况,但我认为这并不是您想要的最佳选择

如果它继续运行,我如何在刷新页面后强制将响应返回到页面? 否由于连接已断开,因此没有可向其发送响应的内容。当ajax调用长进程时,将其作为后台进程调用更合适,并立即返回响应,让后台进程继续工作。您可以使用常规ajax调用来查询流程是否完成,例如在完成时更新数据库

从:

但是,默认行为是在远程客户端断开连接时中止脚本


20分钟严重??在一个完整的单独说明中,您需要知道默认情况下PHP将锁定传入请求的会话,因此相同用户的其他请求将被阻止,直到前一个请求释放会话锁定。您还需要知道,被阻止的请求不会形成队列,它们各自持有锁的顺序是随机的。我想,如果要实现执行时间长的PHP页面,您需要知道这一点。@swapnesh,这需要20分钟。我正在做的是调用ajax函数,并让它调用将执行繁重处理的脚本。这就是我使用AJAX的原因,因为这将是一个异步调用,允许我在脚本运行时返回页面。认真地说,20分钟??在一个完全不同的注释中,您需要知道,默认情况下,PHP将锁定传入请求的会话,因此同一用户的其他请求将被阻止,直到前一个请求释放会话锁定。您还需要知道,被阻止的请求不会形成队列,它们各自持有锁的顺序是随机的。我想,如果要实现执行时间长的PHP页面,您需要知道这一点。@swapnesh,这需要20分钟。我正在做的是调用ajax函数,并让它调用将执行繁重处理的脚本。这就是我使用AJAX的原因,因为它将是一个异步调用,允许我在脚本运行时返回页面。谁会等20分钟在浏览器中获得响应?此外,刷新/关闭页面将使此响应无法访问,即使脚本最终发送它。@ElmoVanKielmo使用cronjob,您通常会更新数据库或其他内容,不是吗
不要将某些内容返回到浏览器。关闭浏览器无法停止cron作业!“从操作问题”还假设我刷新或关闭了网页,然后打开了网页,所以不要告诉我关于cron jobs的故事,我已经在使用您在我的项目中谈论的场景,因为事实并非如此。@ElmoVanKielmo不知道您在胡说什么!easy bro:你的答案是正确的,很有用,我甚至对它投了更高的票,尤其是你所说的cron作业。但结合OP描述……我很久没有听说有人等了20分钟才在浏览器中看到页面。我说的设计问题是在OP项目中,而不是在你们的答案中。顺致敬意,没错,但我说设计有问题。谁会等20分钟在浏览器中获得响应?此外,刷新/关闭页面将使此响应无法访问,即使脚本最终发送它。@ElmoVanKielmo使用cronjob,您通常会更新数据库或其他内容,而不是将某些内容返回到浏览器。关闭浏览器无法停止cron作业!“从操作问题”还假设我刷新或关闭了网页,然后打开了网页,所以不要告诉我关于cron jobs的故事,我已经在使用您在我的项目中谈论的场景,因为事实并非如此。@ElmoVanKielmo不知道您在胡说什么!easy bro:你的答案是正确的,很有用,我甚至对它投了更高的票,尤其是你所说的cron作业。但结合OP描述……我很久没有听说有人等了20分钟才在浏览器中看到页面。我说的设计问题是在OP项目中,而不是在你们的答案中。顺致敬意,谢谢你的意见。如果我的脚本位于单独的文件中,它会停止执行吗?我将测试这个senario,使用和不使用ignore\u user\u abort;是的,默认情况下它仍将停止执行。确保在ignore\u user\u aborttrue;中传递true;。谢谢你的意见。如果我的脚本位于单独的文件中,它会停止执行吗?我将测试这个senario,使用和不使用ignore\u user\u abort;是的,默认情况下它仍将停止执行。确保在ignore\u user\u aborttrue;中传递true;。