Javascript 如何使用php高效地发送大量get请求

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

我正在做一个项目,在这个项目中,我必须开发一个简单的基于PHP的web模块,用户(管理员)可以向学生发送短消息(后续),以满足广告和其他需求

SMS API非常简单,我只需要将获取请求与电话号码和消息一起发送到跨源域。 我用
文件获取内容(“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将消息发送到后端。随机加粗的单词会使阅读变得困难