PDA

View Full Version : حرفه ای: اجرای عملیات بدون درخواست



habibvafapour
جمعه 03 خرداد 1392, 09:22 صبح
سلام خسته نباشید
خوب فرض کنید یکی از کاربران درخواستی رو داده . که دو ساعت دیگر درخواست آماده میشود.
حالا اگر کاربر پای سیستم نباشه یا صفحه رو بروز رسانی نکند درخواست عملی نمیشه . چون PHP باید سر اون ساعت یک سری عملیات انجام دهد.
چه راهکاری برای حل این صورت مسئله وجود داره تا اگر کاربر صفحه خود رو درخواست نکرد . ولی عملیات صورت گیرد.
ممنون

xcodex
جمعه 03 خرداد 1392, 09:40 صبح
سلام دوست عزیز به نظرم با jquery بتونید این کار رو انجام بدید



setTimeout(function() { //calls alert after a 10 second
alert("test");
}, 10000);



یا حق

habibvafapour
جمعه 03 خرداد 1392, 10:10 صبح
نه دوست عزیز این جوریا که فکرش رو میکنی نیست.
تا صفحه درخواست نشه که جی کوئری نمیتونه عملیاتی رو انجام بده.

xcodex
جمعه 03 خرداد 1392, 12:21 عصر
خوب دوست عزیز php server side هست و تا request نباشه کدی run نمیشه مگر اینگه شما task هاتون رو توی یه جدول در database ذخیره کنید همراه با زمانی که میخواید انجام بشه و بعد صفحه مدیریت رو خودتون هندل کنید و با استفاده از همین jquery تایم رو از دیتا بیس بگیرید و action ها رو هندل کنید

من این به نظرم رسید

Unique
جمعه 03 خرداد 1392, 14:49 عصر
ببینید صحبت شما دو تا سواله :

۱ - اگه کاربر الان درخواستی را میکنه و دو ساعت طول میکشه که تموم بشه و کاربر نیست که جوابش را بگیره ؟
معمولا پروسه هایی که زمان بر هستند نباید به شکلی باشند که کاربر را منتظر نگه داریم ! باید صفحه را با ajax یا iframe یا از سمت سرور با curl برای انجام عملیات به کار بندازیم و فورا به کاربر اطلاع بدیم که پروسه شما شروع شده و مثلا در زمان اتمامش به طریقی بهتون خبر داده میشه ! مثلا ایمیل میکنیم یا sms میدیم یا توی panel نتیجش را میگذاریم و اگه قراره نتیجه ای ببینه روش دیدن نتیجه را هم مشخص میکنیم.

۲ - اگه کاربر درخواستی داره که مثلا باید ۲ ساعت دیگه انجام بشه ولی کاربر ۲ ساعت دیگه نیست که صفحه مربوط به درخواست را صدا بزنه یا hit کنه !؟
خوب برای این جور کار هایی که شما زمانبندی دارین باید از cron jobs یا at استفاده کنید ، ولی معمولا ساخت cron job به صورت دینامیک در سیستم های shared که خود php انجامش بده وجود نداره و باید از سیستم های VPS یا dedicated استفاده کنید یا سایت های آنلاین که خدمات cron job میدند و web service دارند تا بتونید cron job های دینامیک تولید کنید.

habibvafapour
جمعه 03 خرداد 1392, 17:41 عصر
دوست عزیز Unique (http://barnamenevis.org/member.php?11933-Unique) ممنون از پاسخ شما.
پاسخ دوم شما استفاده از VPS کار جالبی هست من قصد داشتم همین کار رو انجام بدم و یک نرم افزار تولید کنم و در VPS قرار بدهم .
حالا شما ساخت یک نرم افزار روی vps پیشنهاد میدین یا این که یک صفحه ajax روی vps ؟

Unique
شنبه 04 خرداد 1392, 16:16 عصر
نرم افزار نمیخواد با همون php و توابعی که دستورات shell را اجرا میکنند میتونید cron job ایجاد کنید ، ajax یا Browser Navigation (منظورم لینک دادن معمولیه) فرقی نمیکنه.
برای سرویس های shared یک راه دیگه هم هست (البته به شرطی که اجازه تعیین cronjob وجود داشته باشه و همینوطر امکان استافده از cronjob api هم باشه) :

۱ - فکر کنم از طریق API2 Function ها امکان دخل و تصرف در Cronjob ها ایجاد شده.
۲ - این کلاس (http://www.phpclasses.org/package/7143-PHP-Manage-cron-jobs-of-Cpanel-hosting-accounts.html) هم مدعی هست بدون API2 میتونه این امکان را فراهم کنه