发送短信,在一个相同点的时间
-
05-07-2019 - |
题
先前我发布了一个问题,关于多线程。实际上我的内涵是发送短信,为1000(或更多)的人在同一时间点(例如:12:00尖锐)通过使用c#asp.net 应用程序。那是正确的选择多线程的概念,要实现这一目标?
解决方案
这一概念不需要多穿...
这一概念是多个任务经理/Cron的工作
- 创建一个ASPX脚本,看到的时间和执行的方法需要你
- 设立任务经理到运行这个脚本每二十分钟
- 创建方法,提取人的名单,并发送短信,通过短信,称为前。SendSMSFromList(List usersList,string message){}
- 现已设置一切,你会运行这一任何时候你需要(只设在ASPX脚本)
请,下降了免费的告诉我,如果你需要任何代码这一点。
编辑 对于具有所有步骤
如果你有一个托管解决方案,在您主持的控制面板你有什么作为 任务计划 你可以设立运行你的脚本,页面上的每一个n分钟,如果是,请通过下一个步骤。如果由另一方面,运行的是你自己的服务器(IIS)然后做这个第一。
- 安装cUrl for windows 这个位置 和add curl.exe 要C:\WINDOWS
- 打开任务经理(控制面板>管理工具>任务的调度程序,在windows7资)
- 创建一个新任务 像这样的
- 运行命令
有了这个,你只是配置系统运行一个文件,就像,如果你执行这一链接在一浏览器,这将每15分钟。
现在 我们需要创建的,任务管理器.aspx文件
public partial class taskManager : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
// Run after midnight
if (dt.Hour == 0 && dt.Minute <= 15)
{
Write2Log("Schedule Job Started", LogType.INFO);
SendSMSFromList(
GetUsersList(),
GetSMSMessage());
Write2Log("Schedule Job Finished", LogType.INFO);
}
}
private string GetSMSMessage()
{
// Fetch the text from DB...
return "This is the message content that I will send as SMS";
}
private List<string> GetUsersList()
{
// fetch the list form DB...
return new List<string>();
}
private void SendSMSFromList(List<string> usersList, string message)
{
// send SMS's
foreach (string phoneNr in usersList)
{
// send message
mySMSAPI.Send(phoneNr, message);
}
}
private void Write2Log(string text, LogType type)
{
// Log to a file what's going on...
try
{
string filename = HttpContext.Current.Server.MapPath("") + "\\status.log";
using (StreamWriter sw = new StreamWriter(filename, true)) // open to append
{
// example: 2008-12-17 13:53:10,462 INFO - Schedule Job Finished
string write = String.Format("{0} {1} - {2}",
DateTime.Now,
type.ToString(),
text);
sw.WriteLine(write);
}
}
catch (Exception)
{ }
}
private enum LogType
{ INFO, WARNING, ERROR }
}
完成...
我做的一切只是一个文件为例,你应该鸿沟的事情...但是我后是给你的原则。
其他提示
我不知道你是怎么发短信的。但几乎所有大型短信服务提供商都允许您在1秒内发送1000 所以,除非你真的真的真的非常需要立即发送所有内容,我建议你做一个循环,然后将信息发送给服务提供商。
取决于实际发送短信的方式。如果您让我们说一个发送短信的网络服务,您最终会在一次查询1000次,这将无法解决您的问题。
要实现这一目标,您需要确保发送任务可以同时完成。
编辑:结果 此外,我同意,根据你的系统,这些线程数量不会很健康。
EDIT2: 这需要多么尖锐?假设hh:mm就够了,你可以发送60秒 你的约1000短信。这意味着您需要每秒发送aprox 17 SMS。如果你分享 这让我们说4个线程然后你只需要确保你的发送过程/ 设备可以发送4个短信/秒。这应该是可以实现的。
HTH
我不认为这对你有用,并且不建议创建如此大量的线程。
另请参阅此链接
SMS应用程序是否允许发送给多个人?或者可以在各种盒子上使用不同的服务来发送这些短信子集。但我认为一次发送这样的音量很难。
我怀疑你会遇到一些传输问题,在那个时候假设它是一个实时的过程,会把这么多的数据提供给你的SMS提供商。
我找到一个能够进行预定发送的提供商,然后将消息排队,以便在我的闲暇时间在凌晨12点发送。