PDA

View Full Version : سوال: انجام خودکار کار ها در سایت روی سرور در زمان خاص



mohsen-unique
سه شنبه 07 دی 1389, 14:29 عصر
با سلام
من می خوام یه کسری کارها روی سرور سایت در زمان خاصی انجام بشه بدون اینکه نیاز باشه من کاری بکنم
مثلا توی یه ساعت خاصی ایمیل به بعضی کاربران فرستاده بشه یا یه تابعی اجرا بشه و از پایگاه داده بکاپ بگیره و امثال اینا
آیا همچین موردی رو میشه با asp پیاده کرد یا باید روی سرور تنظیمات خاصی اعمال بشه

Saber_Fatholahi
سه شنبه 07 دی 1389, 16:19 عصر
سلام
یه طریق استفاده ز job توی sql هست که باید به سرور دسترسی داشته باشی
یه روش ذیگه که به دهن من میرسه استفاده از dll اقای خلیل زاده هست توی همین سایت خیلی بحث شده توی یکی از پست های من توضیح دادم اماا متاسفانه آدرسش یادم نیست

mehrdad201
سه شنبه 07 دی 1389, 16:47 عصر
والا دی ال ال سالار خان به گفته یکی از دوستان یه مشکلی داشت و اون این بود که اگه بنا به دلایلی سایت یوزر نداشت بخاطر رویداد application_end پروسه بسته میشد .

یه امکانی در هاست ها هست به اسم schedule که من اطلاعات چندانی در موردش ندارم. اما تا اونجا که عقل ناقص من یاری میکنه شما میتونستی یه سری کدها رو (فکر کنم زبان برنامه نویسیش زبان خاصی بود) مینوشتی و اون بر اساس زمانبندی خودش انجام میداد.

مقوله Schedule رو یه سرچی بکن. شاید مطلب بدرد بخوری بدست بیاری.

mohsen-unique
سه شنبه 07 دی 1389, 17:41 عصر
والا دی ال ال سالار خان به گفته یکی از دوستان یه مشکلی داشت و اون این بود که اگه بنا به دلایلی سایت یوزر نداشت بخاطر رویداد application_end پروسه بسته میشد .

یه امکانی در هاست ها هست به اسم schedule که من اطلاعات چندانی در موردش ندارم. اما تا اونجا که عقل ناقص من یاری میکنه شما میتونستی یه سری کدها رو (فکر کنم زبان برنامه نویسیش زبان خاصی بود) مینوشتی و اون بر اساس زمانبندی خودش انجام میداد.

مقوله Schedule رو یه سرچی بکن. شاید مطلب بدرد بخوری بدست بیاری.
تا جایی که من می دونم schedule روی سرور لینوکسه نه ویندوز
من میرم سرور رو یه چک کنم نتیجش رو اینجا اعلام می کنم مرسی فعلا

mohsen-unique
سه شنبه 07 دی 1389, 19:05 عصر
من هاست رو نگاه کردم این امکان برای ویندوز هم هست ولی توی هاست من غیرفعاله به ادمین سرور گفتم ببینم نتیجش چی میشه
این هم یه راهنمایی کلی درباره ی schedule ویندوز


Scheduling a Task (Windows Hosting)

To schedule a task for a domain:


Go to Home > Scheduled Tasks > Schedule New Task.
Input a name for your task in the Description field.
In Scheduler notification, specify whether the scheduler should notify you when it runs this task. The following options are available:

Do not send - do not notify you.
Send to the default e-mail - send the notification to your default e-mail address.
Send to the e-mail I specify - send the notification to the e-mail specified in the corresponding field. After selecting this option, you need to input the required e-mail in the field on the right.


Specify which command to run. Type it into the Path to executable file input box. If you need to run the command with certain options, type them in the Arguments field.

For example, if you want to run the statistics calculation task to count disc space and see more detailed information for the example.com and example.net domains, you need to specify the following path in the Path to executable file input box:C:\Program Files\Parallels\Plesk\admin\bin\statistics.exe
and the following options in the Arguments field:
--disk-usage --process-domains=example.com, example.net –verbose
If you want to run your own php script using the task scheduler, you need to specify the following path in the Path to executable file input box:C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP5\php.exe
and specify the script location in the Arguments field:
C:\Inetpub\vhosts\mydomain.tld\httpdocs\myscript.p hp


Select the appropriate priority in the Task priority field. Task priority can be set to Low, Normal or High.
Specify when to run your command by selecting the appropriate check boxes in the Hours, Days of Month, Months or Days of Week fields.
Click OK to schedule the task or click Run Now to schedule the task and immediately run it.

aykan648
سه شنبه 07 دی 1389, 20:14 عصر
بلاخره راهي واسه اين كار هست ؟
لطفا يه نفر نتيجه رو اعلام كنه !!!

mohsen-unique
سه شنبه 07 دی 1389, 20:23 عصر
بلاخره راهي واسه اين كار هست ؟
لطفا يه نفر نتيجه رو اعلام كنه !!!
بله سه راه برای این کار هست
1-استفاده از scheduleخود هاست
2-استفاده از سرویس های ویندوز یعنی یه سرویس برای این کار بنویسی و روی سرور اجرا کنی توی لینک زیر روشش بیان شده
http://msdn.microsoft.com/en-us/magazine/cc163821.aspx
3-استفاده از خود امکانات asp.net که فکر کنم بهترین راه همین باشه توی لینک زیر روش اون بیان شده
http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

raziee
سه شنبه 07 دی 1389, 20:24 عصر
ا سلام
من می خوام یه کسری کارها روی سرور سایت در زمان خاصی انجام بشه بدون اینکه نیاز باشه من کاری بکنم
مثلا توی یه ساعت خاصی ایمیل به بعضی کاربران فرستاده بشه یا یه تابعی اجرا بشه و از پایگاه داده بکاپ بگیره و امثال اینا
آیا همچین موردی رو میشه با asp پیاده کرد یا باید روی سرور تنظیمات خاصی اعمال بشه
من این کار رو انجام دادم.
شما در ساده ترین راه میتونید یک Timer در Application_Start بسازید.
این ساده ترین راه هست. اما من بعد از پیاده سازی این روش به مشکلاتی برخورد میکردم. بعضی وقت ها این Timer - Stop میشد.
=-=-
بعد از تحقیق به نتیجه ای رسیدم که در این لینک (http://www.codeproject.com/KB/aspnet/ASPNETService.aspx) میتونید مشاهده کنید.
تا امروز که مشکلی در اون سایت نداشتم.
در اون سایت در بازه ی زمانی 40 ثانیه پیامک هایی رو از دیتابیس خونده و ارسال میکنه.
این لینک ها رو هم میتونید مطالعه کنید. اما من از روشی که در لینک بالا گفتم استفاده کردم.

http://www.codeproject.com/KB/aspnet/scheduledtasks_webservice.aspx
http://msdn.microsoft.com/en-us/magazine/cc163821.aspx
http://www.beansoftware.com/ASP.NET-Tutorials/Scheduled-Tasks.aspx
http://weblogs.asp.net/samirgeorge/archive/2009/05/09/scheduled-task-in-asp-net-web-application-using-timers.aspx

aykan648
یک شنبه 26 دی 1389, 12:38 عصر
سلام
اين لينك مقاله آقاي خليل زاده است ! (http://barnamenevis.org/showthread.php?86446-WebTaskScheduler-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%DA%A9%D8%A7%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-%D8%B2%D9%85%D8%A7%D9%86-%D9%85%D8%B4%D8%AE%D8%B5-%28%D8%AE%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%88-...%29)

Javad_Darvish_Amiry
یک شنبه 26 دی 1389, 14:55 عصر
به نظر من روشی که اقای Omar Al Zabir استفاده کردن، مطمئن ترین روش هست. چون من خودم دفعه اول که به چنین چیزی نیاز داشتم، رفتم سراغ ترید ها، رو کامپیوتر خودم کار می کرد، رو سرور دچار مشکل میشد. بعد هم تایمر که باز همین داستان بود. بعد استفاده از کش. (کالبک کش) هر چند این جا هم طبق تجربه عملیم (از لحاظ تئوری همه این روش ها درستن و کار میکنن، اما تو عمل نه) میگم که این روش کامل و بدون نقص نیست، اما فعلا بهترین راهه. (نتیجه گیری من میگه -درست و غلطش رو نمیدونم- که به دلیل دسترسی محدود به منابع تو سرور، عملا بهتره وارد هیچکدوم از این حوزه ها نشیم و از امکانات خود سرور و ویندوز استفاده کنیم. چون حتی تو استفاده از کالبک های کش، باز اگه سرور هر جایی نیاز بدونه کلا کش ما رو پاک میکنه و بابای کالبک های ما رو هم در میاره). برای فرار از این مشکل، من task های مورد نظرم رو با یه فلگ -انجام شده، انجام نشده- نشونه گذاری کردم، و تو انجام هر تسک، تایم سه تا تسک بعدی رو محاسبه و ذخیره کردم - تو کاربرد من تا سه تا کفایت میکرد، بسته به کاربرد میتونه کم یا زیاد بشه- از طرفی تو اجرای هر تسک، قبل از اینکه خودش رو اجرا کنم، اول چک کردم که تسک های قبلی انجام شدن یا نه؛ از یه طرف دیگه، چون هر لحظه باید انتظار نابودی کامل پروسه کاربردمون رو داشته باشیم، و تو همچین شرایطی ممکنه لیست تسک های در انتظار افزایش پیدا کنه، و از اونور هم وقتی Appliction_end اتفاق افتاد، دیگه start نمیشه مگه با رسیدن یه درخواست به سایت، یه برنامه کنسول ساده هم نوشتم که هر 5 دقیقه یه بار یه درخواست به سایت میفرستاد، چون این یکی رو کامپیوتر خودم بود، ازش مطمئن بودم، ولی خوب تو این پروژه، دسترسی کامل و لحظه ای به اینترنت وجود داشت.
اگه بخواید از این طریق عمل کنید و دسترسی به اینترنت دائم هم مقدور نیست، میتونید از امکانات موجود تو خد نت استفاده کنید. مثلا سایت هایی هستند که مرتبا بلاگ ها رو پینگ میکنن (تا حالا سراغشون نرفتم)(هر چند دقیقه یه بار یه درخواست به صورت راندوم به یکی از صفحات سایت میفرستن)، یا مثلا گوگل هم تو قسمت Web Master Tools یه بخشی برای مانیتورینگ دائم سایت ها داره. چون برای مانیتور، به سایتتون درخواست میفرسته، خود به خود در صورت داون شدن سایت، دوباره استارت میشه -حالا با چه پریودی اینکارو انجام میده نمیدونم-. ببخشید سرتون رو درد آوردم. موفق باشید.

mohsen-unique
یک شنبه 26 دی 1389, 17:06 عصر
بهترین کار استفاده از روبات های گوگله همیشه به سایت سر می زنن و در صورت داون شدن سایت با سرکشی دوباره ی روبات، سایت استارت میشه
من از همین روش استفاده کردم و هیچ مشکلی نداره

Ishtar_4552
دوشنبه 11 بهمن 1389, 12:01 عصر
با سلام
دوستان من از برنامه زمانبندی که در سایت codeproject آموزش داده شده استفاده کردم ولی چون به صورت web application ایجاد شده بود من اونو به پروژه وب سایت تبدیل کردم تا بتونم توی سایتم از اون استفاده کنم و فقط یکبار اجرا میشه و به محض اینکه به متد hit page میرسه خطای زیر رو میده،دوستانی که از این برنامه استفاده کردن یه لطفی بکنن منو توی این زمینه راهنمایی کنن.

65758

Javad_Darvish_Amiry
سه شنبه 12 بهمن 1389, 00:05 صبح
سلام خسته نباشید. وقتتون به خیر. من فعلا ویندوز ندارم و متاسفانه نتونستم کدتون رو اجرا و چک کنم. اما حدس میزنم -از روی کدی که فرستادید- اشکال باید از خط زیر در فایل گلوبال باشه:

private const string DummyPageUrl = "http://localhost/WebForm1.aspx";
آدرسی که اینجا داده شده قابل دستیابی نست و برای همین ارور ۴۰۴ -پیدا نشد- میده. این آدرس رو باید با توجه به آدرسی که صفحه WebForm1.aspx تو هر اجرا میگیره تنظیم بفرمایید. مثلا:

private const string DummyPageUrl = "http://localhost:14141/MySite/WebForm1.aspx";
دقت بفرمایید اگه سایتتون رو IIS داره نصب و اجرا میشه نیاز به دادن شماره پورت نیست و فقط اسم پوشه مجازی کفایت میکنه؛ ولی اگه با VS دارید رانش میکنید باید شماره پورت رو اینجا تنظیم کنید (معمولا هربار که وی اس اجرا میشه یه پورت رو اختیار میکنه و تو تمام ران شدن های اون اجرا از همون پورت استفاده میکنه مگه این که امکانش نباشه یا وی اس رو ببندیم و دوباره باز کنیم که در این صورت چون یه پروسه ی جدید ایجاد میشه و پورت قبلی کماکان تو کش سیستم در اختیار پروسه قبلی قرار داره؛ معمولا یه دونه به پورت افزوده یا ازش کم میشه - هر چند از توی پراپرتی های وب سایتتون میتونید یه شماره پورت ثابت تعریف کنید که همیشه از همون استفاده بشه - البته وی اس ۲۰۰۸ و ۲۰۱۰ این امکان رو دارن ولی ۲۰۰۵ رو والله یادم نیست). بهترین راه برای رهایی از پورت ها اینه که پروژه رو IIS نصب شه و خیالتون از این بابت جمع میشه. (چقدر حرف زدم!!! شرمنده) موفق باشید.

رها
شنبه 16 بهمن 1389, 12:24 عصر
سلام
من هم از این لینک استفاده کردم نتیجه داد
http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

delamtangete
دوشنبه 18 اردیبهشت 1391, 21:08 عصر
از اساتید معادل vb.net برنامه زیر رو دارند؟
http://www.codeproject.com/Articles/12117/Simulate-a-Windows-Service-using-ASP-NET-to-run-sc

delamtangete
پنج شنبه 21 اردیبهشت 1391, 10:06 صبح
چه انجمن فعالی!

flash_mx
پنج شنبه 21 اردیبهشت 1391, 11:21 صبح
با سلام

کنترل پنل پلسک scheduled خیلی خوبی داره ، فقط دقت کنید که با اون می تونید یک فایل EXE یا VBS رو روی سرور اجرا کنید در نتیجه مثل لینوکس نمی تونید در داخل scheduled ویندوز آدرس صفحه مورد نظر رو بدید که اجرا بشه. در نتیجه شما باید در داخل فایل EXE یا VBS که می نویسید صفحه مورد نظر خودتون رو لود کنید.

نمونه کد:
Call RunIt()
Sub RunIt()

Dim RequestObj
Dim URL
Set RequestObj = CreateObject("Microsoft.XMLHTTP")

'Request URL...
URL = "http://www.mydomain.co.nz/myScript.aspx"

'Open request and pass the URL
RequestObj.open "POST", URL , false

'Send Request
RequestObj.Send

'cleanup
Set RequestObj = Nothing
End Sub

این بهترین و قابل اطمینان ترین روشه برای اجرای برنامه در زمان های خاصه

http://kb.diadem.co.in/kb_upload/image/avik/task/schedule_task_plesk%2010_st4.png

mohsen.nsb44
پنج شنبه 21 اردیبهشت 1391, 14:20 عصر
سلام
یه طریق استفاده ز job توی sql هست که باید به سرور دسترسی داشته باشی
یه روش ذیگه که به دهن من میرسه استفاده از dll اقای خلیل زاده هست توی همین سایت خیلی بحث شده توی یکی از پست های من توضیح دادم اماا متاسفانه آدرسش یادم نیست
میشه اموزش job رو بزارین من خیلی دنبالش بودم اما چیزی پیدا نکردم

flash_mx
جمعه 22 اردیبهشت 1391, 15:25 عصر
از گوگل بپرس :
http://msdn.microsoft.com/en-us/library/ms190268.aspx#SSMSProcedure