以前我發佈了一個關於多線程的問題。其實我的意圖是通過使用c#和asp.net應用程序,在相同的時間點(例如:凌晨12:00)發送1000個(或更多)人的短信。可以選擇多線程概念來實現這一點嗎?在相同的時間點發短信
回答
這一概念並不需要多線程...
這個概念更多的是一種任務管理器/定時任務
- 創建一個ASPX的腳本看到的時間和執行需要 方法
- 將任務管理器設置爲每xx分鐘運行一次該腳本
- 創建一個方法,該方法獲取人員列表並通過SMS API發送SMS,然後調用它,例如, SendSMSFromList(名單usersList,字符串消息){}
- 現在設置好一切,你將運行這個任何時候你需要(只是把它在ASPX腳本)
請下跌自由地告訴我,如果你需要任何代碼。
具有所有編輯步驟
如果你有一個託管解決方案,在您的主機控制面板,你有什麼作爲任務計劃,你可以設置運行腳本每隔n分鐘一頁,如果是這樣請通過下一步操作。另一方面,如果您正在運行自己的服務器(IIS),請先執行此操作。
- 從this location安裝Windows捲曲和添加curl.exe到C:\ WINDOWS
- 打開任務管理器(控制面板 - >管理工具> Win7上任務計劃程序)
- 創建新任務like this
- 執行命令
與此相同,您只需將系統配置爲運行文件,就像在瀏覽器中執行該鏈接一樣,每15分鐘運行一次。
現在,我們需要創建一個文件taskManager.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 }
}
做...
我只在一個文件中所做一切爲了舉例起見,你要分東西。 ..但是我之後是向你展示它的原理。
我不認爲這會爲你工作,並不建議創建如此大量的線程。
而且,看到這個鏈接
maximum-number-of-threads-in-a-net-app
是否SMS應用程序允許發送到多少?或者,也可以在不同的盒子上使用不同的服務來發送這些短信子集。但我認爲立即發送這樣的音量將是困難的。
所以你能告訴我什麼是我的問題的解決方案?有沒有其他的替代方法來實現? – Nagu 2009-10-22 09:51:19
取決於SMS如何實際發送。如果您讓我們說一個發送短信的Web服務,您最終將在一個點上查詢1000次,這無法解決您的問題。
要做到這一點,您需要確保發送任務可以同時完成。
編輯:
此外,我同意你的系統根本不會對你的系統健康。
編輯2: 這需要多大?假設hh:mm就足夠了,你可以用60秒發送 約1000秒。這意味着您需要每秒發送aprox 17 SMS。如果你分享 這可以說4線程,那麼你只需要確保你的發送過程/ 設備可以發送4 SMS/s。我猜這應該是可以實現的。
HTH
我不知道你是怎麼給他們發短信的。但幾乎所有的大型短信服務提供商都會允許您在1秒內發送1000次。
所以,除非你真的很真的真的很真的需要一次發送它們,我建議你做一個循環,並將信息發送給服務提供商。
我懷疑你會遇到一些運輸問題,假設這是一個實時的過程,那麼在那個時候你的SMS提供商會獲得那麼多的數據。
我會找到一個提供者能夠進行計劃發送,然後排隊在休息時間12點發送消息。
- 1. 短信發送時間android
- 2. 發送相同的短信兩次
- 3. WP7在特定時間發送短信的時間表?
- 4. 發短信失敗發短信短信
- 5. Android:獲取短信發送時間
- 6. 自動發短信同步
- 7. 多人在同一時間的短信在iOS?
- 8. 發短信圖片,短信
- 9. FullCalendar - 不同日子的不同最短時間/最短時間
- 10. &符號在短信 - 短信發送android
- 11. 集團短信從相同的號碼
- 12. 短信相關的錯誤Android開發
- 13. 短信調度程序在特定時間用於短信
- 14. 如何在收到短信時發送回覆短信?
- 15. 發送短信時出錯
- 16. Android:發送即時短信
- 17. 發送短信時出錯
- 18. 用於發送短信的短信不
- 19. 使用Python發送短信;考慮時區的時間延遲
- 20. Android在按鈕點擊時自動發送短信
- 21. 在特定時間發送短信(創建工作)
- 22. 如何在特定時間發送短信
- 23. 在時間上發送多個模擬器短信
- 24. 在特定時間發送每日短信
- 25. 使用處理程序在一段時間後發送短信?
- 26. 如何在一定時間後定期發送短信自動
- 27. 用戶可以在預定時間發送短信
- 28. sendTextMessage給出nullpointerexception,同時在Android中發送多個短信
- 29. 如何在android中同時發送電子郵件和短信?
- 30. 發送短信
或者使用http://quartznet.sourceforge.net/ Quartz.net如果調度需求更復雜 – fvu 2009-10-22 10:07:58
雅謝謝你,我會按照這樣做。如果我們每10秒調用一次數據庫或者在一段時間內調用數據庫,那麼它是否可以正常工作? – Nagu 2009-10-22 10:21:30
@fvu很好的開源應用程序,我需要看到這個:)我使用任務管理器捲曲:D – balexandre 2009-10-22 10:25:32