PDA

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



cpuram
سه شنبه 11 تیر 1392, 20:02 عصر
سلام دوستان.
خیلی از سایت ها میبینم بعضی از کارها در زمان های بسیار دقیق حتی ثانیه انجام میشه و این در حالی هست که نهایت cronjob دقیقه هست.

سایت های حراجی سر یک ثانیه خاص حراجی رو میبنده.
سایت پروژه پیمانکار سر یک ثانیه خاص زمان پیشنهاد رو میبنده.
و خیلی از کارهای دیگه رو که در یک ساعت خاص باید انجام بشه .
لطفا توضیح خوبی بدید + کدهای مربوط به این کار.
ممنون.

cpuram
چهارشنبه 12 تیر 1392, 11:54 صبح
کسی نیست به داد من برسه . تالار php مثل سابق نیست.

colors
چهارشنبه 12 تیر 1392, 14:13 عصر
سلام

زیاد پیچیده نیست. یعنی مثلا زمانی که یه حراجی ثبت میشه تو بانک یه فیلدی برای تاریخ (روز, ساعت یا ثانیه) پایانش در نظر میگیرن و زمانی که کاربر صفحه رو باز میکنه, PHP زمان پایان حراجی رو از بانک گرفته و بعد کمی جمع و تفریق زمان باقی مونده رو با JS نمایش و کم میکنه. بعد وقتی که زمان حراجی تموم بشه با PHP یه شرط (IF) میزاره که به جای نمایش زمانی باقی مونده بزن که حراجی تموم شده. البته اگه کاربر مستقیما صفحه رو باز کرده و حراجی داره به پایانش نزدیک میشه, میتونی با JS یا AJAX به جای زمان باقی مونده بزنی که "وقتش تموم شد", یا حتی میتونی صفحه رو رفریش کنی

یعنی بیشتر زمانی که کاربری صفحه رو باز کنه اتفاقات رخ میده, نه پشت پرده و یا با Cronjob

cpuram
چهارشنبه 12 تیر 1392, 19:32 عصر
سایتهای ارسال پیام کوتاه چطور؟ تنظیم میکنید سر یک ساعت مشخص SMS ارسال بشه؟

arta.nasiri
چهارشنبه 12 تیر 1392, 20:11 عصر
سلام دوستان.
خیلی از سایت ها میبینم بعضی از کارها در زمان های بسیار دقیق حتی ثانیه انجام میشه و این در حالی هست که نهایت cronjob دقیقه هست.

سایت های حراجی سر یک ثانیه خاص حراجی رو میبنده.
سایت پروژه پیمانکار سر یک ثانیه خاص زمان پیشنهاد رو میبنده.
و خیلی از کارهای دیگه رو که در یک ساعت خاص باید انجام بشه .
لطفا توضیح خوبی بدید + کدهای مربوط به این کار.
ممنون.

سلام
از همون Cron Job استفاده کنید و هر دقیقه یکبار فایل اسکریتتون رو اجرا کنید. سپس تو فایل اسکریپت بررسی کنید ببینید چقدر به زمان مورد نظر باقی مانده، اگر کمتر از یک دقیقه بود مثلا به زمان مورد نظر 20 ثانیه مانده است با استفاده دستور sleep(20) این زمان باقی مانده را هم طی کنید.

من خودم از این روش برای job task ها استفاده میکنیم.

http://php.net/manual/en/function.sleep.php

colors
چهارشنبه 12 تیر 1392, 20:40 عصر
سلام
از همون Cron Job استفاده کنید و هر دقیقه یکبار فایل اسکریتتون رو اجرا کنید. سپس تو فایل اسکریپت بررسی کنید ببینید چقدر به زمان مورد نظر باقی مانده، اگر کمتر از یک دقیقه بود مثلا به زمان مورد نظر 20 ثانیه مانده است با استفاده دستور sleep(20) این زمان باقی مانده را هم طی کنید.

من خودم از این روش برای job task ها استفاده میکنیم.

http://php.net/manual/en/function.sleep.php

توصیه نمیشه!
همون روشی که در پست بالا توضیح دادم هیچ مشکلی نداره. نیازی به استفاده از Cronjob نیست و الکی برای سرور فشار وارد نکنید.

colors
چهارشنبه 12 تیر 1392, 20:41 عصر
سایتهای ارسال پیام کوتاه چطور؟ تنظیم میکنید سر یک ساعت مشخص SMS ارسال بشه؟

تاحالا همچین اسکریپتی ننوشتم, ولی منطقا باید از Cron Job استفاده بشه

arta.nasiri
پنج شنبه 13 تیر 1392, 00:19 صبح
توصیه نمیشه!
همون روشی که در پست بالا توضیح دادم هیچ مشکلی نداره. نیازی به استفاده از Cronjob نیست و الکی برای سرور فشار وارد نکنید.

همانطور که خودتون هم فرمودید، روش شما فقط در اینجور سایت ها کاربرد داره، یعنی مواقعی که کاربر وارد سایت میشه تو پشت صحنه یک اسکریپت چند خطی اجرا کنیم تا شرایط رو بررسی کنیم. حالا اگه از نظر بهینه بودن بررسی کنیم، شما در نظر بگیرید سایتتون در لحظه 2000 تا بازدید کننده داشته باشه که معادل اینه که 2000 تا از اسکریپتمون تو همون لحظه رو سرور اجرا بشه که این رقم مدام در حال افزایش و کاهش است و تا زمانی که به تایم مورد نظر نرسیده ایم این عملیات در حال تکراره. و احتمال خطا با توجه به همزمانی اجرای اسکریپت ها یعنی وقتی به زمان مشخص شده رسیدیم چند نمونه از اسکریتمون اجرا و به اتمام برسه چون امکان داره چند کاربر همزمان وارد سایت بشن. اگه همه این شرایط رو در نظر بگیرید به این نتیجه میرسید که این روش بهینه نیست و هزینه زیادی رو سرور داره و از طرف دیگه احتمال خطا هم وجود داره همانطور که گفتم ( بالاخره باید همه شرایط در نظر گرفت ).

ولی روشی که من گفتم در هر یک دقیقه یکبار احرا میشه و شرایط رو بررسی میکنه یعنی چندین برابر کمتر از روش شما اجرا میشه که قابل توجه!!!! و فکر نکنم اجرای یک اسکریپت در هر یک دقیقه با توجه به سخت افزارهای امروزی بار زیادی رو سرور متحمل کنه!!! و احتمال خطا نزدیک به صفر میشه.

البته نمیگم روشی که من گفتم بدون نقصه ولی خوب با توجه با تحقیقاتی که داشتم قعلا این روش از بقیه روشهایی که در موردشون اطلاعاتی دارم بهتره.

mtn677
پنج شنبه 13 تیر 1392, 09:47 صبح
سلام
از همون Cron Job استفاده کنید



سلام
من می خوام یک فایل html که در هاستم وجود داره هر یک دقیقه یک بار اطلاعات داخلش کاملا پاک بشه با Cron Job میشه اینکارو انجام بدم؟
یه تایپیک ایجاد کردم ولی هیچ کس جوابی نداد اینجا
(http://barnamenevis.org/showthread.php?406705-%D8%AE%D8%A7%D9%84%DB%8C-%D8%B4%D8%AF%D9%86-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9-%D9%85%D8%AD%D8%AA%D9%88%DB%8C%D8%A7%D8%AA-%D8%AF%D8%A7%D8%AE%D9%84-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%AF%D8%B1-%D9%87%D8%A7%D8%B3%D8%AA)

cpuram
پنج شنبه 13 تیر 1392, 09:53 صبح
کد پاک کردن با اجرای فایل رو دارید؟

mtn677
پنج شنبه 13 تیر 1392, 10:03 صبح
کد پاک کردن با اجرای فایل رو دارید؟

سلام
نه متاسفانه هیچی ندارم:افسرده:

colors
پنج شنبه 13 تیر 1392, 10:28 صبح
همانطور که خودتون هم فرمودید، روش شما فقط در اینجور سایت ها کاربرد داره، یعنی مواقعی که کاربر وارد سایت میشه تو پشت صحنه یک اسکریپت چند خطی اجرا کنیم تا شرایط رو بررسی کنیم. حالا اگه از نظر بهینه بودن بررسی کنیم، شما در نظر بگیرید سایتتون در لحظه 2000 تا بازدید کننده داشته باشه که معادل اینه که 2000 تا از اسکریپتمون تو همون لحظه رو سرور اجرا بشه که این رقم مدام در حال افزایش و کاهش است و تا زمانی که به تایم مورد نظر نرسیده ایم این عملیات در حال تکراره. و احتمال خطا با توجه به همزمانی اجرای اسکریپت ها یعنی وقتی به زمان مشخص شده رسیدیم چند نمونه از اسکریتمون اجرا و به اتمام برسه چون امکان داره چند کاربر همزمان وارد سایت بشن. اگه همه این شرایط رو در نظر بگیرید به این نتیجه میرسید که این روش بهینه نیست و هزینه زیادی رو سرور داره و از طرف دیگه احتمال خطا هم وجود داره همانطور که گفتم ( بالاخره باید همه شرایط در نظر گرفت ).

ولی روشی که من گفتم در هر یک دقیقه یکبار احرا میشه و شرایط رو بررسی میکنه یعنی چندین برابر کمتر از روش شما اجرا میشه که قابل توجه!!!! و فکر نکنم اجرای یک اسکریپت در هر یک دقیقه با توجه به سخت افزارهای امروزی بار زیادی رو سرور متحمل کنه!!! و احتمال خطا نزدیک به صفر میشه.

البته نمیگم روشی که من گفتم بدون نقصه ولی خوب با توجه با تحقیقاتی که داشتم قعلا این روش از بقیه روشهایی که در موردشون اطلاعاتی دارم بهتره.

حرف شما کاملا درسته, ولی منظور بنده برای همچین سیستمی بود. البته چند خط کد برای بررسی کردن یه شرط که به وفور تو همه اسکریپتها موجوده و هر سایتی با هر بازدیدی مجبور به اجرای دستوراتش هست فکر نکنم مشکلی داشته باشه! کلا فکر نکنم چک کردن یه شرط برای پایان یه حراجی که کلا میشه تو یه خط نوشتش بخواد به سرور فشاری بیاری.

شرایط دیگر روهم در نظر بگیریم که اگه سایت بازدید کمی داشته باشه یا اصلا تو تایم زمانی خاصی بازدیدکننده داشته باشه (منظور نصفه شب ها) چرا الکی سرور رو درگیر کنیم!

در مورد خطای که فرمودین, کاملا قبول دارم, ولی اگه اسکریپتی همچین ضعفی داشته باشه همون بهتره که پر از باگ باشه چون همچین موردی رو میشه به خوبی کنترل کرد.

colors
پنج شنبه 13 تیر 1392, 10:30 صبح
سلام
من می خوام یک فایل html که در هاستم وجود داره هر یک دقیقه یک بار اطلاعات داخلش کاملا پاک بشه با Cron Job میشه اینکارو انجام بدم؟
یه تایپیک ایجاد کردم ولی هیچ کس جوابی نداد اینجا
(http://barnamenevis.org/showthread.php?406705-%D8%AE%D8%A7%D9%84%DB%8C-%D8%B4%D8%AF%D9%86-%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%AA%DB%8C%DA%A9-%D9%85%D8%AD%D8%AA%D9%88%DB%8C%D8%A7%D8%AA-%D8%AF%D8%A7%D8%AE%D9%84-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%AF%D8%B1-%D9%87%D8%A7%D8%B3%D8%AA)

چرا میخواید محتویاتشو پاک کنید؟
دلیلتونو بگید شاید راه بهتری باشه

mtn677
پنج شنبه 13 تیر 1392, 10:35 صبح
چرا میخواید محتویاتشو پاک کنید؟
دلیلتونو بگید شاید راه بهتری باشه
گفتن دلیلش که خیلی سخته اصلا این کار امکان پذیر هست؟

colors
پنج شنبه 13 تیر 1392, 11:29 صبح
گفتن دلیلش که خیلی سخته اصلا این کار امکان پذیر هست؟

عجب!
بله امکان پذیره, یه فایل میسازی یه چند خط کد میریزی توش و میدی به cron job که هر یه دقیقه اجرا کنه و فایل رو تخلیه کنه.

کد:

$handler = fopen("yourfile.html", "r+");
ftruncate($handler, 0);
fclose($handler);