如何从浏览器级别停止正在运行的php进程

如何从浏览器级别停止正在运行的php进程,php,mysql,zend-framework,Php,Mysql,Zend Framework,我有一个基于Zend框架和Mysql的PHP应用程序。 我有一个应用日期范围、查询数据库并返回输出的报告页面。 如果我选择几天,查询运行得很快。但是如果我选择几个月的日期范围,由于数据输出量很大,这需要很长时间 现在我的问题是,每当我运行一个更大的日期范围,并且进程开始运行很长时间,我就没有办法取消它。 我无法停止浏览器或重新加载浏览器,即使我关闭浏览器并打开新页面,apache也不会响应。换句话说,该过程强制apache挂起。 打破这一局面的唯一方法是在linux服务器上终止进程或重新启动ap

我有一个基于Zend框架和Mysql的PHP应用程序。 我有一个应用日期范围、查询数据库并返回输出的报告页面。 如果我选择几天,查询运行得很快。但是如果我选择几个月的日期范围,由于数据输出量很大,这需要很长时间

现在我的问题是,每当我运行一个更大的日期范围,并且进程开始运行很长时间,我就没有办法取消它。 我无法停止浏览器或重新加载浏览器,即使我关闭浏览器并打开新页面,apache也不会响应。换句话说,该过程强制apache挂起。 打破这一局面的唯一方法是在linux服务器上终止进程或重新启动apache

我想知道我可以对代码做些什么改进,以便能够在任何时候强制停止该过程

如何开发代码以避免像这样的锁定?我错过了什么


谢谢

我建议最好的方法是使用日期范围函数。 在前端,当选择日期并单击提交按钮时,触发一个函数来计算天数差异

如果超过所需的范围,不要让表单提交,并向用户显示一条消息以选择较低的日期范围


还要确保在执行查询的页面上验证相同的内容,这样即使用户使用javascript,后端也会忽略请求,不会执行查询

我建议最好的方法是使用日期范围函数。 在前端,当选择日期并单击提交按钮时,触发一个函数来计算天数差异

如果超过所需的范围,不要让表单提交,并向用户显示一条消息以选择较低的日期范围


还要确保在执行查询的页面上验证相同的内容,这样即使用户使用javascript,后端也会忽略请求,不会执行查询

你不能。您在浏览器端所能做的就是点击
,然后关闭与服务器的连接。但是,除非PHP注意到连接已经关闭(例如,通过尝试执行输出),否则它将继续运行,直到完成、cpu/时间限制达到或宇宙热死亡。如果您使用的是基于文件的会话,则您已将自己锁定在所有使用页面的会话之外,因为正在运行的脚本正在锁定会话文件。我想重新表述我的问题。是因为数据量大还是数据库设计不好?您可以将该页面设置为ajax。让用户选择几个月,并限制视图(可能类似于数据表)。因此,您将只询问服务器有限的数据,哪一个更快。但若它是糟糕的数据库设计,那个么它也会在其他地方产生问题,所以若你们能修复它,你们就不能。您在浏览器端所能做的就是点击
,然后关闭与服务器的连接。但是,除非PHP注意到连接已经关闭(例如,通过尝试执行输出),否则它将继续运行,直到完成、cpu/时间限制达到或宇宙热死亡。如果您使用的是基于文件的会话,则您已将自己锁定在所有使用页面的会话之外,因为正在运行的脚本正在锁定会话文件。我想重新表述我的问题。是因为数据量大还是数据库设计不好?您可以将该页面设置为ajax。让用户选择几个月,并限制视图(可能类似于数据表)。因此,您将只询问服务器有限的数据,哪一个更快。但若它是糟糕的数据库设计,它也会在其他地方制造问题,所以若你们能修复它。