Javascript 如何使异步ajax请求真正异步?
我在我的网站上添加了新功能。管理员正在上传带有一些图片的存档文件(出租收据),这些图片正在发送给用户。我的网站atm上有50-100个用户。最大用户数为700-1000 我正在使用phpJavascript 如何使异步ajax请求真正异步?,javascript,php,jquery,ajax,asynchronous,Javascript,Php,Jquery,Ajax,Asynchronous,我在我的网站上添加了新功能。管理员正在上传带有一些图片的存档文件(出租收据),这些图片正在发送给用户。我的网站atm上有50-100个用户。最大用户数为700-1000 我正在使用phpmail()函数发送电子邮件。这需要时间。通过mail()发送一条信息需要约3.5秒。我需要至少发送100条信息 我有下一个代码结构: 主脚本: 输入类型为文件的图形表单 正在使用此文件上载存档 形式 检查存档的名称、存档的内容。所有文件必须是 某种形式的 向脚本发出ajax请求 发送租金收据.php。月份和年份
mail()
函数发送电子邮件。这需要时间。通过mail()
发送一条信息需要约3.5秒。我需要至少发送100条信息
我有下一个代码结构:
主脚本
:
发送租金收据.php
。月份和年份作为参数发送发送租金收据.php
(获取月份和年份):
../$year/$month
../$year/$month
do:- 获取文件名(名称类似于774.pdf,772.pff-文件名将此文件连接到用户
- 获取用户的电子邮件
- 发送带有附件的电子邮件(当前文件)
php.ini
中设置了max\u execution\u time 30
,因此该脚本失败(因为它的工作时间远远超过30秒)
我尝试了另一种方法:
主脚本
:
../$year/$month
../$year/$month
do中的每个文件
- 获取文件名
- 向脚本发出ajax请求
(文件名、月份、年份正在发送)发送租金收据.php
send\u php\u script.php
:
../$year/$month/$filename
发送到此
邮寄发送3封电子邮件:
发送10封电子邮件:
为什么ajax请求(
async:true
作为默认值)作为非异步请求工作。此图显示,向脚本发送1封电子邮件的10个ajax请求与向脚本发送10封电子邮件的1个请求所用的时间相同
为什么会这样?我认为它们必须是异步的,所有订阅都需要3.5秒
如何减少脚本执行时间?如何让脚本运行得更快
注意:文件不相等,因此我无法向10个收件人发送1封电子邮件。您可以异步发送请求,但在第一封邮件完成之前等待发送下一封邮件 当您同时执行多个请求时,请求所需时间较长的原因是因为每个请求都访问磁盘,这是一个原子操作,因此一次只能有一个请求执行磁盘操作,因此如果您执行多个访问磁盘的请求,则不处理磁盘操作的请求离子现在,需要等待一个这样做
您不应该使用sync ajax请求,因为它们会阻止请求进行时的javascript线程,因此如果您发送一个请求,等待回调并发送下一个,您将模拟sync请求,而不会阻止javascript线程,并且不会得到请求超时,因为accessi时只有一个请求关闭磁盘,这样就不会有任何请求等待另一个请求完成磁盘工作。仅仅因为浏览器异步发出请求并不意味着服务器将一次处理所有请求。您的屏幕截图显示请求是异步发送的,因此您需要澄清您的实际问题。因此,我的问题是e:是否可以运行XX个相同的脚本(一次处理所有请求)一分钟?或者如果服务器不能做到这一点,应该采取什么方法。事实上,看起来后端是瓶颈。Ajax请求应该很便宜。好的。也许我的问题不是很正确。Ajax请求确实是异步发送的,但如何让服务器一次处理所有这些请求。发送\出租\接收脚本是否使用会话\开始()?如果是,这将锁定脚本,直到释放会话。