PDA

View Full Version : سوال: کرون جاب



nemo php
یک شنبه 15 دی 1392, 12:09 عصر
سلام

چطور میشه یک کد phpرو در زمان دلخواه اجرا کرد.
مثلا توی چت پیامی برای یک از یوزر ها امد اختاری داده شود که شما پیام جدید دارید.

a_mzadeh
یک شنبه 15 دی 1392, 12:34 عصر
سلام؛
سوال شما دو تا بخش داره: اینکه شما میخواین کد php رو تو زمان دلخواه اجرا کنین و یا اینکه میخواین بر اثر یک رویداد خاص (مثل ارسال پیام جدید تو چت) عملیاتی رو سمت کلاینت انجام بدین.
اگر منظورتون مورد اول هست که شما میتونی از فرمت خط فرمان php و استفاده از cron فایل مورد نظر خودت رو در زمان‌های مشخص اجرا کنی.
اما اگر منظورتون حالت دوم هست (تا اونجا که من اطلاع دارم) سه تا روش هست:
۱. راه اول این هست که تو فواصل نزدیک به هم مدام به سمت سرور request ارسال کنی ببینی آیا پیام جدیدی ارسال شده یا نه.
۲. استفاده از iframe هست به این شکل که شما سمت کلاینت یک iframe باز می‌کنی با یک آدرس مشخص ولی سمت سرور پاسخی برای کلاینت ارسال نمیکنی، با تنظیم set_time_limit(0) اجازه میدی که اجرا با خطای timeout مواجه نشه و تو یک حلقه while true هر زمان که نتیجه‌ای برای نمایش وجود داشت، پاسخ (که میتونه کد جاوااسکریپت باشه) رو برای کلاینت ارسال می‌کنی. البته باید توجه داشته باشی که تو این روش باید حتما توی حلقه از sleep استفاده کنی که CPU‌ رو درگیر نکنه.
۳. استفاده از ajax مشابه روش قبل. به این شکل که شما request‌ رو ارسال می‌کنی ولی سرور (مشابه روش قبل) تا زمانی که پیامی برای نمایش وجود نداشته باشه پاسخی رو برای کلاینت ارسال نمی‌کنه.
البته روش ۲ و ۳ مشکلاتی هم دارن که اگر دوست داشتی میتونم بگم :چشمک:

metal gear solid 4
یک شنبه 15 دی 1392, 13:11 عصر
سوال شما اصلاً ارتباطی به cron job نداره.
اگر مثالتون همون چت باشه باید از روشهای Ajax Reverse استفاده کنید. یا اصطلاحاً Comet. توی اینترنت سرچ بزنید. نتایجی گیرتون میاد. روش های جدیدی هم برای اینکار هست مثل استفاه از Socket ها.
HTML 5 هم سوکت هارو پشتیبانی میکنه اما در صورتی که نمیخاید از HTML5 استفاده کنید باید از کتابخونه های جاوااسکریپتی دیگه ای استفاده کنید.

nemo php
دوشنبه 16 دی 1392, 10:44 صبح
میشه درمورد cronبیشتر توضیح بدید؟