Javascript 如何使用php高效地发送大量get请求
我正在做一个项目,在这个项目中,我必须开发一个简单的基于PHP的web模块,用户(管理员)可以向学生发送短消息(后续),以满足广告和其他需求 SMS API非常简单,我只需要将获取请求与电话号码和消息一起发送到跨源域。 我用Javascript 如何使用php高效地发送大量get请求,javascript,php,get,request,file-get-contents,Javascript,Php,Get,Request,File Get Contents,我正在做一个项目,在这个项目中,我必须开发一个简单的基于PHP的web模块,用户(管理员)可以向学生发送短消息(后续),以满足广告和其他需求 SMS API非常简单,我只需要将获取请求与电话号码和消息一起发送到跨源域。 我用文件获取内容(“sms_api_url?凭证”)对其进行了测试并且工作正常 让我担心的是,短信将被发送到数吨的号码,因此我必须使用循环多次发送请求,这将花费大量时间,而且我认为这将消耗太多资源。 另外,PHP的最大执行时间设置为30秒,我不想更改 我想使用客户端JavaScr
文件获取内容(“sms_api_url?凭证”)对其进行了测试代码>并且工作正常
让我担心的是,短信将被发送到数吨的号码,因此我必须使用循环多次发送请求,这将花费大量时间,而且我认为这将消耗太多资源。
另外,PHP的最大执行时间设置为30秒,我不想更改
我想使用客户端JavaScript在循环中发送跨源请求,这样它就不会影响我的服务器,但这并不安全,因为它会暴露API凭据
我应该使用什么技术来实现我的目标?并高效地发送大量get请求?从服务器发送请求,但不要在生成页面的PHP脚本中这样做
而是将所需消息的信息存储在数据库中
编写另一个程序,定期检查数据库中未发送的消息,并调用API。您可以使用cron运行它。您没有告诉我们您需要处理的实际卷、处理/连接时间的指标,也没有告诉我们实现中存在哪些约束
就目前的情况来看,这一点太宽泛了,无法回答。但你可以考虑的一些方法是:
1) 运行-但请注意,就像域切分一样,如果过度使用,这可能会破坏您的带宽
2) 您可以让PHP脚本在Web服务器之外无限期地运行(使用CLI SAPI),并且这些脚本可以是
我想使用客户端JavaScript在一个循环中发送跨源请求,这样它就不会影响我的服务器,但这并不安全,因为它会暴露API凭据
如果直接发送到端点,则是的,您需要在浏览器中使用凭据。但是,如果您实现了一个代理脚本,在您的Web服务器上注入凭据,那么您可以从浏览器中使用自己的凭据
使用cron有一定的优势——但您确实不想从cron派生一个任务来发送一条SMS消息——它需要成批运行,并且您需要管理并发性
您可能想考虑切换到一个可以提供批量处理的不同聚合器。
无论采用哪种方法,您都需要一种存储消息/电话号码的方法,以及一种围绕检索处理的锁定机制
就我个人而言,我很想考虑使用MTA来实现这一点,甚至是Kannel——但这更像是一种处理每天超过300000个卷的方法。在30秒内发送所需数量的网络请求是两个相互矛盾的要求。而且,原始的“效率”可能仅仅意味着压缩服务器中的每一个资源,这可能是不可取的
我认为重点是:
- 我可能错了,但据我所知,只有两种方法可以防止非授权方使用web服务:私人凭据和IP过滤。在基于浏览器的JavaScript中不可能实现任何功能
- 在这类任务完成之前,不要让人盯着电脑看。完全没有必要这样做,甚至会导致任务中止
- 如果您需要向不同的收件人发送相同的文本,请了解SMS提供商是否有允许在单个API请求中执行此操作的API。当此功能不可用时,大批量交付会变得困难一到两个数量级
简而言之,您需要:
- 命令行脚本
- 任务调度器(例如cron)
- 更喜欢服务器稳定性而不是最大效率(您甚至可能希望限制您的请求)
将消息存储在数据库中,并使用cron将消息发送到后端。随机加粗的单词会使阅读变得困难