PDA

View Full Version : Thread در Application_Start



Nightbat
شنبه 24 آذر 1386, 17:16 عصر
من مجبورم هر 2 دقیقه از یه جایی یه فایله xml بخونم و db رو update کنم. اومدم تو Application_Start یه Thread درست کردم که بعد از یه بار خوندن اطلاعات 2 دقیقه sleep می شه و بعد از دو دقیقه دوباره اطلاعات رو می گیره. این کار رو local خیلی خوب و بدون اشکال انجام میشه، ولی وقتی آپلودش می کنم، هر وقت request به سرور فرستاده می شه کار می کنه، تازه نه هر 2 دقیقه، اگه تویه دقیقه 3 تا صفحه باز کنم، سه دفعه Thread اجرا می شه. کسی از دوستان می دونه مشکل از کجاست.

hamedgh
شنبه 24 آذر 1386, 19:40 عصر
خوبی thread به همین است که می توانی به صوزت موازی کاری انجام بدهی
اگر فقط می خو.اهی یک بار این کار انجام بشود راه حلی دیگری پیدا کن
در مورد زمان هم راه های مختلفی وجود داره اگر این راه جواب نمی ده که بعیده اگر sleep
می کنی باید صبر کنه

Nightbat
شنبه 24 آذر 1386, 22:39 عصر
میشه یه بار چیزی که نوشتم رو با دقت بخونی. من نگفتم می خوام یه بار کار کنه. من می خوام موازی کار کنه و مرتب. برا همین تو application_Start نوشتم که به هر حال و به طور مرتب اجرا شه مگر اینکه application یه جوری kill شه. که اونوقت با اولین request به سرور دوباره start میشه. مشکل من اینه که هر دفعه که یه صفحه باز می شه، انگار که application_start میشه. و thread من دوباره از اول اجرا می شه. و این مشکل هم فقط وقتی آپلود میکنم هست، رو local این مشکل رو ندارم.

Behrouz_Rad
یک شنبه 25 آذر 1386, 00:24 صبح
http://barnamenevis.org/forum/showthread.php?t=86446

Nightbat
یک شنبه 25 آذر 1386, 12:36 عصر
فکر می کنید مشکل application_start چی باشه، آیا میتونه از تنظیمات host باشه ؟

Behrouz_Rad
دوشنبه 26 آذر 1386, 01:28 صبح
درسته که Thread باعث اجرای همروند Task ها میشه اما فشار بیشتری رو به CPU تحمیل می کنه و این برای یک سرور خوشایند نیست.
این مورد رو می تونی تست کنی.
در روال Application_End یک کد برای Log کردن این روال بنویس. اگر با ایجاد هر درخواست، کدت اجرا میشه، منطقا باید ابتدا Application_End رخ بده و سپس Application_Start

موفق باشید.

Nightbat
چهارشنبه 28 آذر 1386, 11:08 صبح
مشکل از applicationpool بود. هاست برای pool محدودیت تعیین کرده بود و چون تعداد app هایی تو اون pool زیاد بود، app رو kill میکرد. من هم یه applicationpool ه جدا ازشون خریدم. فقط جالبه که ادمین ه به من گفت من اصلا اجازه thread درست کردن تو هاست نمیدم. ولی thread من داره کار می کنه !!!