我目前正在开发一个拥有庞大数据库的 CRM 系统。
如果用户想要搜索客户,可以使用ajax搜索。每当他在搜索字段中更改某些内容时,当呼叫处于待处理状态时,旧呼叫就会被取消,并且新呼叫将发送到服务器。
我的问题是,服务器端的 php 进程继续运行。因此,如果用户开始输入地址,则会启动和取消多个请求,并且服务器需要越来越多的时间来应答。
当ajax调用被取消时,是否可以取消正在运行的php进程?
或者服务器端是否有一种可能的解决方案,以检测来自同一用户的搜索请求是否正在运行并在开始新请求之前取消它?
预先感谢您的回答。
您的服务器端 php 必须输出一些内容来检测请求是否被取消。但由于您可能正在执行冗长的 sql 查询,因此您无法输出任何内容。
但您仍然可以将连接 ID 保存到会话中,并在检测到连接时终止连接:
- 公开会议
- 打开sql连接
- 如果在会话中设置了search_connection_id,则终止连接
- 找到您的连接 ID,在会话中保存为 search_connection_id
- 关闭会话 - 重要,否则下一个请求将在步骤 1 中被阻止
- 查询数据库
- 如果连接断开,则在第 3 步中将进行另一次搜索,退出
- 打开会话,删除search_connection_id
- 发送响应,关闭sql连接
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)