View Full Version : ارسال sms اتومات
resident
یک شنبه 02 دی 1397, 08:44 صبح
سلام.
من میخوام به صورت اتومات برای افرادی که تاریخ تولدشون همون روز هست sms بدم.
تو application_start این کار رو انجام دادم اما مشکل اینجاست که اگه کسی وارد برنامه نشه، application_start اجرا نمیشه.
چه راهی هست برای این کار؟
سعید کشاورز
یک شنبه 02 دی 1397, 10:11 صبح
سلام
به نظرم میتونی از Quartz استفاده بکنی
برنامه زمان بندی بنویسی برای این کار و در هر روز چک بشه که تولد چه کسانی هست
https://www.quartz-scheduler.net/
مهدی کرامتی
یک شنبه 02 دی 1397, 11:45 صبح
تو application_start این کار رو انجام دادم اما مشکل اینجاست که اگه کسی وارد برنامه نشه، application_start اجرا نمیشه.
رویداد Application_Start جای مناسبی برای این کار نیست، چرا که فقط یک بار، زمانی که برنامه هنوز روی سرور بالا نیومده و برای اولین بار با باز شدن یکی از صفحات اجرا میشه این رویداد اجرا میشه. اگر میخوای الزاما از رویدادهای Global.asax استفاده کنی Session_Start گزینه بهتری محسوب میشه.
به نظرم میتونی از Quartz استفاده بکنی
کتابخانه Quartz بیشتر بدرد برنامه های دسکتاپ میخوره تا وب (بخاطر تفاوت اجرای پروسس در وب).
در وب بهتره از Hangfire استفاده کنی که برای وب بهینه شده (پشت صحنه خودش از Quartz استفاده می کنه، البته با رعایت الزامات Process Management در IIS Worker Process).
با استفاده از Hangfire می تونی یک Task بنویسی که 24 ساعت یک بار مثلا ساعت 10 صبح هر روز اجرا بشه، و با یک کوئری اونهایی رو که امروز تولدشون هست رو بدست بیاره و بهشون SMS یا ایمیل بزنه.
سعید کشاورز
یک شنبه 02 دی 1397, 12:52 عصر
با استفاده از Hangfire می تونی یک Task بنویسی که 24 ساعت یک بار مثلا ساعت 10 صبح هر روز اجرا بشه، و با یک کوئری اونهایی رو که امروز تولدشون هست رو بدست بیاره و بهشون SMS یا ایمیل بزنه.
هاست های اشتراکی یه idleTime دارن که اگر درخواستی به سمتشون ارسال نشه نرم افزار یا سایت رو Stop میکنن و بعد از اینکه اولین درخواست به سمتشون ارسال بشه مجددا برنامه از رویداد Application_Start شروع به کار میکنه
سوال: آیا اگه از Hangfire استفاده کنیم، زمانی که برنامه Stop باشه مثلا ساعت 10 بشه خود Hangfire اجرا میشه؟ یا اینکه حتما نیاز داره برنامه در حال اجرا باشه؟
resident
دوشنبه 03 دی 1397, 15:39 عصر
رویداد Application_Start جای مناسبی برای این کار نیست، چرا که فقط یک بار، زمانی که برنامه هنوز روی سرور بالا نیومده و برای اولین بار با باز شدن یکی از صفحات اجرا میشه این رویداد اجرا میشه. اگر میخوای الزاما از رویدادهای Global.asax استفاده کنی Session_Start گزینه بهتری محسوب میشه.
جناب کرامتی الزامی بر استفاده از رویدادهای Global.asax ندارم. به نظر شما بهترین جا برای این کار کجاست؟
resident
چهارشنبه 05 دی 1397, 10:19 صبح
سوال: آیا اگه از Hangfire استفاده کنیم، زمانی که برنامه Stop باشه مثلا ساعت 10 بشه خود Hangfire اجرا میشه؟ یا اینکه حتما نیاز داره برنامه در حال اجرا باشه؟
جناب کرامتی ممنون میشم علاوه بر سوال خودم، این سوال رو هم پاسخ بدید. سوال خیلی خوبیه
مهدی کرامتی
چهارشنبه 05 دی 1397, 11:49 صبح
سوال: آیا اگه از Hangfire استفاده کنیم، زمانی که برنامه Stop باشه مثلا ساعت 10 بشه خود Hangfire اجرا میشه؟ یا اینکه حتما نیاز داره برنامه در حال اجرا باشه؟
همه Thread های فرعی (مثل اونهایی که توسط Hangfire ایجاد می شوند) توسط Thread اصلی برنامه ASP.NET شما ایجاد می شوند، بنابراین اگر Thread اصلی برنامه شما به هر دلیل از جمله تنظیمات IdleTime در سرور، Recycle شوند، تمام Thread های فرعی نیز به همراه آن متوقف خواهند شد. در مقاله ای در سایت سازنده پکیج Hangfire موضوع همیشه تحت اجرا نگه داشتن برنامه های ASP.NET (http://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html) بررسی شده است، اما استفاده از آن تکنیک نیازمند داشتن دسترسی Admin به سرور مربوطه جهت انجام تنظیمات لازم، یا درخواست فعال کردن قابلیت AutoStart از ارائه دهنده سرویس میزبانی خواهد بود.
اما همه چیز هم نا امید کننده نیست. اگر مشکل اجرا بودن/کردن برنامه به هر ترتیب حل شود با توجه به اینکه Hangfire امکان Persist کردن وضعیت تسک ها را در یک دیتابیس یا انواع دیگر Storage ها را دارد، پس از اجرای مجدد برنامه تسک هایی که در Hangfire تعریف شده بودند Resume خواهند شد.
جناب کرامتی الزامی بر استفاده از رویدادهای Global.asax ندارم. به نظر شما بهترین جا برای این کار کجاست؟
پاسخ دقیق شما در پست شماره 3 (http://barnamenevis.org/showthread.php?552970-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-sms-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA&p=2407262&viewfull=1#post2407262) همین تاپیک دادم: رویداد Session_Start
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.