واضح آرشیو وب فارسی:سایت ریسک: بدون استفاده از كران جاب ... hmarei 21 ارديبهشت 1387, 16:57سلام ببينم راهي وجود داره كه ي اسكريپت بدون استفاده از كران جاب "cronjob" هر 10 دقيقه يا 15 دقيقه اجرا بشه ؟ آخه اين ي سايت مثه پارسيكه كه بايد آخرين اخبار رو بياره رو سايت هر 10 دقيقه ولي مشكل اينجاست كه ديتاسنتر هشدار داده به سرور ما كه كران جاب ها بايد رو يك ساعت تنظيم شه ! حالا سايتي هست كه اينكارو بكنه ؟ يا ميشه اسكريپتي با php نوشت كه اگربار اول اجرا شد. هر 10 دقيقه اتوماتيك خوشو اجرا كنه ؟ كمك كنيد سريعا " ! albusandharry 21 ارديبهشت 1387, 19:36با php که میشه اینو نوشت (با هر زبان دیگری هم میشه ) اما مشکلش اینه که بر خلاف cron job بستگی اجرای این فرایند به اون اینه که کران داخل سرور انجام میگیره اما در این حالت پنجره ی کد نویسی شما باید برای همیشه باز باشه و کد همیشه در حال اجرا و خوب طبیعتا اتصال به اینترنت دائمی ! ( البته فکر کنم راه دیگری نباشه ، چون خود من هم یک مدت دنبالش بودم برای خالی کردن دیتابیسم ) hba 21 ارديبهشت 1387, 22:13يك راه ديگه چك كردن زمان با باز كردن صفحه توسط كاربران يعني هر كاربري صفحه رو باز كردن زمان چك شه بعد 10 دقيقه بود عمليات با باز كردن اون شخص انجام شه amir01 21 ارديبهشت 1387, 22:39اگه درست متوجه شده باشم شما میخوای یه قسمت از سایتت هر 10 دقیقه یه بار رفرش بشه درسته؟ اگه این باشه با آژاکس راحت میشه این کارو کرد...(البته اگه درست متوجه شده باشم مشکلت رو) peyman1987 21 ارديبهشت 1387, 23:43يك راه ديگه چك كردن زمان با باز كردن صفحه توسط كاربران يعني هر كاربري صفحه رو باز كردن زمان چك شه بعد 10 دقيقه بود عمليات با باز كردن اون شخص انجام شه اين بهترين و تنها راه انجام اين کار بدون Cron هست. البته وابستگي شديد به اين داره که شما حداقل دقيقه اي يک بازديدکننده از سايتتون ديدن کنه و صفحه رو باز کنه. hba 22 ارديبهشت 1387, 17:43نه اگر مي خواهد 10 دقيقه يك بار كاري صورت بگيره يعني كافيه هر 10 دقيقه يك نفر صفحه اول سايت رو باز كنه peyman1987 22 ارديبهشت 1387, 19:07نه اگر مي خواهد 10 دقيقه يك بار كاري صورت بگيره يعني كافيه هر 10 دقيقه يك نفر صفحه اول سايت رو باز كنه درسته ولي به شرطي که تاريخ قبلي ريفرش رو يه جا ذخيره کنيم. اگر بخواين از روشهايي مثل تقسيم زمان بر مدت زمان و از اين چيزها استفاده کنين نياز دارين که کدتون هر يک دقيقه ( حداقل ) اجرا بشه. jhoseini 22 ارديبهشت 1387, 21:44یعنی واقعاً هیچ راهی غیر این دو روش نیست؟ راه اصولی تری برای این حالت پیشبینی نشده یعنی؟ به php نمیاد اینقدر دست و پا چلفتی باشه B-: حتماً یه راهی هست peyman1987 22 ارديبهشت 1387, 22:33جلال جان بخيال!!!!! کد که نميتونه خودبخود اجرا بشه. Phpهم که نميتونه يه جوري خودشو اجرا کنه. بالاخره يکي بايد اجراش کنه. albusandharry 23 ارديبهشت 1387, 21:51cron job مثل Scheduled Tasks ویندوزه. حالا چرا تنظیمات 1 ساعت 1 ساعت تنظیم شده به این خاطره که احتمالا تعدد اسکریپت ها در بازه های کم ضمن اینکه خود سرورها request های زیادی رو بصورت نرمال از کاربرها میگیرند باعث میشه عملا افت داشته باشیم (توی هرچیزی که در سیستم سرور نصبه ) احتمالا میشه کارهایی کرد بازهم میگردم مثلا shell نویسی یا command های لینوکس (البته من زیاد وارد نیستم صرفا یک چیزهایی خوندم) شاید باشه که بشه کار Scheduled Tasks ویندوز رو بصورت دستی تو لینوکس کرد ( !!! شاید، شاید !!! ) اما منطقی ترین جواب : چك كردن زمان با باز كردن صفحه توسط كاربران يعني هر كاربري صفحه رو باز كردن زمان چك شه بعد 10 دقيقه بود عمليات با باز كردن اون شخص انجام شه و یا اینکه اگر به سرورهاتون خیلی اعتماد دارید: اسکریپتی بنویسید که 50 دقیقه loop (وقفه) بخوره و هر 10 دقیقه ( 5 تا 10 دقیقه ) توی حلقه کد مورد نظر خودتون رو چک کنه. ولی در عمل فکر کنم نصف cpu های هاستینگ های ماها جواب همچین کاری رو نده. یک چیز دیگه اینکه تا جایی که من یادم می آید یکی از هاست های اولیه ای که من باهاش کار می کردم گزینه دقت دقیقه رو هم توی cron job خود داشت. شاید این تنظیمات هم قابل تغییر باشه از طرف مدیر سرور. زیاد شد! ببخشید. (چون موضوع رو دنبال می کردم گفتم چیزی گفته باشم) my friend 24 ارديبهشت 1387, 13:28داشتم پست ها رو میخوندم که ببینم راه حلی ارائه شده یا نه ، موقع خوندن پست دوست عزیزم، albusandharry راه حلی به ذهنم رسید که فکر میکنم مناسب باشه: <? set_time_limit(3600); function(); sleep(900); function(); sleep(900); function(); sleep(900); function(); ?> چند مورد رو بگم بد نیست: 1. set_time_limit زمان اجرای برنامه رو تعیین میکنه... بهتره روی 3600 ثانیه (1 ساعت) تعیین بشه. 2. تابع function تابعی هست که باید هر 15 دقیقه یکبار انجام بشه.این تابع رو 4 بار اجرا کنید (مثل مثال بالا) و cron jobs رو روی 1 ساعت تنظیم کنید. 3. تابع sleep رو 3 بار اجرا کنید (مثل مثال بالا ، لازم نیست 15 دقیقه اضافی از سرور کار بکشید!) 4. اگه میخواهید برنامه دقیقتر باشه ، ببینید چقدر طول میکشه تا تابع function اجرا بشه (با تابع microtime)، زمان بدست آمده رو از 900 کم کنید و به عنوان آرگومان تابع sleep استفاده کنید... 5. تابع sleep بار اضافی زیادی روی سرور قرار نمیده... شاید این الگوریتمی که نوشتم بهترین جایگزین برای cronjobs باشه... البته با توجه به مشکل شما! 6. ممکنه یه مشکلی بوجود بیاد: اگه برنامه مثلا ساعت 3:00 اجرا بشه ، ساعت 3:15 و 3:30 و 3:45 هم باید اجرا بشه ، اما اگه سرور ساعت 3:10 ریستارت بشه ، باید صبر کنید تا cronjobs دوباره اسکریپت رو اجرا کنه! 7. خوش باشید! jhoseini 24 ارديبهشت 1387, 17:47اینا راه حل نمیشه، این سوال رو باید از لینوکس کار ها پرسید، و باید به چیزی غیر از php روی لینوکس متوسل شد albusandharry 24 ارديبهشت 1387, 17:51خیلی عالی بود. دقیقاً منظور همین بود. البته تست کردم و مطمئن شدم که احتمال غریب به یقین بدون مشکل جوابگو خواهد بود. (به درد من که میخوره: برای ارسال با وقفه خبرنامه هام به ایمیل ها با همین فرمول 1 ساعت و هر ده دقیقه 50 تا 50 تا ) اینم تصویر درصد کارکرد cpu (معمولی) : :) با تشکر اینا راه حل نمیشه، این سوال رو باید از لینوکس کار ها پرسید، و باید به چیزی غیر از php روی لینوکس متوسل شد جواب میده ها! البته راست میگی اگه از طریق سرور راه حل بهتری باشه باز بهتره. (اما خوب اینهم کلکیه که cron job رو استفاده میکنی 1 ساعت به 1 ساعت اما ده دقیقه ده دقیقه ! < چی شد؟ > ) hba 24 ارديبهشت 1387, 19:17اقا اينها جواب نيست چون بايد صفحه وا باشه كه Sleep كار كنه مي خواهيم صفحه باز نباشه و خودش كار كنه تنها راه : كرون جاب استفاده از بازديد كنندگان اگر با لينوكس هم حتي bash script هم بنويسيم ارزش نداره چون اين همون cron ميشه ديگه albusandharry 25 ارديبهشت 1387, 11:15اقا اينها جواب نيست چون بايد صفحه وا باشه كه Sleep كار كنه مي خواهيم صفحه باز نباشه و خودش كار كنه تنها راه : كرون جاب استفاده از بازديد كنندگان اگر با لينوكس هم حتي bash script هم بنويسيم ارزش نداره چون اين همون cron ميشه ديگه مگه غیر از اینه که از cron job استفاده شده در این راه حل. به استثنای اینکه دیگه زحمت بازکردن صفحه با کاربر یا مدیر نیست. خود سرور هر 1 ساعت اینکارو میکنه؟!! hmarei 27 ارديبهشت 1387, 15:09داشتم پست ها رو میخوندم که ببینم راه حلی ارائه شده یا نه ، موقع خوندن پست دوست عزیزم، albusandharry راه حلی به ذهنم رسید که فکر میکنم مناسب باشه: <? set_time_limit(3600); function(); sleep(900); function(); sleep(900); function(); sleep(900); function(); ?> چند مورد رو بگم بد نیست: 1. set_time_limit زمان اجرای برنامه رو تعیین میکنه... بهتره روی 3600 ثانیه (1 ساعت) تعیین بشه. 2. تابع function تابعی هست که باید هر 15 دقیقه یکبار انجام بشه.این تابع رو 4 بار اجرا کنید (مثل مثال بالا) و cron jobs رو روی 1 ساعت تنظیم کنید. 3. تابع sleep رو 3 بار اجرا کنید (مثل مثال بالا ، لازم نیست 15 دقیقه اضافی از سرور کار بکشید!) 4. اگه میخواهید برنامه دقیقتر باشه ، ببینید چقدر طول میکشه تا تابع function اجرا بشه (با تابع microtime)، زمان بدست آمده رو از 900 کم کنید و به عنوان آرگومان تابع sleep استفاده کنید... 5. تابع sleep بار اضافی زیادی روی سرور قرار نمیده... شاید این الگوریتمی که نوشتم بهترین جایگزین برای cronjobs باشه... البته با توجه به مشکل شما! 6. ممکنه یه مشکلی بوجود بیاد: اگه برنامه مثلا ساعت 3:00 اجرا بشه ، ساعت 3:15 و 3:30 و 3:45 هم باید اجرا بشه ، اما اگه سرور ساعت 3:10 ریستارت بشه ، باید صبر کنید تا cronjobs دوباره اسکریپت رو اجرا کنه! 7. خوش باشید! ببين هر يك ساعت سرور با كران جاب چك كنه آيا اين اسكريپت كارش رو روي 10 دقيقه انجام ميده ؟ براي مثال همون كدهارو طوري بنويس كه هر 10 دقيقه فايل example.php اجرا بشه ! hba 27 ارديبهشت 1387, 15:46اقا يه راه ديگه پيدا كردم يك سري سايت هستند جهاني كارشون لينك از تو ميگيرند و بازه ززماني برات رانش مي كنند خيلي توپ بود سرچ كردم free cron job site my friend 27 ارديبهشت 1387, 17:52ببين هر يك ساعت سرور با كران جاب چك كنه آيا اين اسكريپت كارش رو روي 10 دقيقه انجام ميده ؟ براي مثال همون كدهارو طوري بنويس كه هر 10 دقيقه فايل example.php اجرا بشه ! <? set_time_limit(3600); function(); sleep(600); function(); sleep(600); function(); sleep(600); function(); sleep(600); function(); sleep(600); function(); ?> شاید بهتر باشه از این روش استفاده کنید: اقا يه راه ديگه پيدا كردم يك سري سايت هستند جهاني كارشون لينك از تو ميگيرند و بازه ززماني برات رانش مي كنند خيلي توپ بود سرچ كردم free cron job site greyzero 03 خرداد 1387, 13:56يك راه ديگه چك كردن زمان با باز كردن صفحه توسط كاربران يعني هر كاربري صفحه رو باز كردن زمان چك شه بعد 10 دقيقه بود عمليات با باز كردن اون شخص انجام شه كار رفرش سايت رو به عهده ي كاربران بازديد كننده گذاشتن خيلي جالب نيستش . چون سرعت لود صفحه براي اونا پائين مي ياد . به نظر من اين ايراد به اين روش وارده . البته نه همه جا و نه براي هر برنامه اي .
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 1276]