نمایش نتایج 1 تا 4 از 4

نام تاپیک: comet chat

  1. #1

    Question comet chat

    سلام دوستان

    من کدی نوشتم برای چت از طریق comet ... قسمت دریافت پیامش رو که توی کنترلر هست کدش رو براتون میذارم مشکل اینجاست که وقتی اون while رو برمیدارم ( وقتی حلقه وایل نداشته باشه مثل اینه که از کلاینت هر دفه به سرور میره و برمیگرده که کامت نمیشه ) وقتی برمیدارم درست کار میکنه ولی وقتی WHILE هست ( درخواست برای 25 ثانیه در سرور باقی میمونه و هر 1 ثانیه چک میکنه که پیام جدید اومده یا نه ) در این حالت درست کار نمیکنه یعنی وقتی صفحه رو رفرش میکنیم هنگ میکنه . نمیدونم مشکل از کجاست امروز رو کلا نشستم روش اصلانشد که نشد


    $startTime = strtotime("now");
    $maxLoopTime = 25;
    while($startTime - strtotime("now") < $maxLoopTime ){
    $cc=$this->message_model->count_msguser($id);
    if ($cc['cnt']>0) break;
    sleep(1000000);
    }


    این کدی هست که اگه از زمان ورود به حلقه 25 ثانیه گذشته باشه و یا اینکه تعداد پیام جدید بیشتر از صفر باشه از حلقه میاد بیرون و در ادامه ( کدش رو نذاشتم ) پیام های جدید رو واکشی میکنه و برای کار بر میفرسته

    لطفا بررسی کنید در ضمن آموزش های comet که توی سایت بود رو هم مطالعه کردم ولی درست نشد

    جاوا اسکریپتم هم اینه


    var comet_xhr;
    function create_xhr() {
    var xhr;
    if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
    else if (window.ActiveXObject) xhr = new ActiveXObject("Microsoft.XMLHTTP");
    return xhr;
    }

    function start_get(){
    comet_xhr=create_xhr();
    comet_xhr.onreadystatechange=receive_state;
    comet_xhr.open("GET", 'get.php');
    comet_xhr.send(null);
    }


    function receive_state() {
    if(comet_xhr.readyState!=4) return;
    msg=comet_xhr.responseText;
    // namayesh message
    comet_xhr.open("POST", 'get.php');
    comet_xhr.send(null);
    }

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: comet chat

    شما عدد بزرگتر رو در سمت راست علامت - گزاشتی !

    $startTime - strtotime("now") 



    خب جوابش منفی میشه ! و تا آخرالزمان حلقه متوقف نمیشه

    ---
    دوم اینکه تابع sleep به ثانیه میگیره ورودیش رو شما اومدی گفتی 1 ملیون ثانیه اسلیپ کنه ... تقریبا میشه 12 روز !
    ---
    سوم اینکه همیشه در این جور مواقع از max_execution_time استفاده کن و مشخص کن حداکثر زمانی که کد میتونه ران بشه چقد باشه


    من تو این نمونه کد عدد ها رو پایین دادم که نتیجه مشخص بشه سریع


    ini_set('max_execution_time' , 8 );

    $startTime = time() ;

    $maxLoopTime = 5;

    while( time() - $startTime < $maxLoopTime ){

    echo 'checking ....<br />';
    sleep(1);
    }


    echo 'done';





  3. #3

    نقل قول: comet chat

    اون تابع usleep بود بر حسب میکرو ثانیه اینجا اشتباه شده ... ممنون از دقت نظرتون . ولی مشکل من بازم سرجاشه ... من میخوام کلاینت منتظر جواب سرور نمونه ! تو این مثالی که شما زدین حداکثر سرور 5 یا حداکثر 8 ثانیه مشغول خواهد بود توی این زمان من حتی نمیتونم پیام ارسال کنم ( ایجکس ارسال پیام اجرا نمیشه ) چون منتظر یک جواب از سمت سرور هست , صفحه هم رفرش نمیشه , حالا من میخوام توی سایتم توی همه صفحات بشه چت کرد مثل چت فیس بوک که یک پنل کوچیک پائین باز میشه و این مشکل برام دردسر ساز شده
    آخرین ویرایش به وسیله beh3000 : چهارشنبه 14 خرداد 1393 در 08:38 صبح

  4. #4
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: comet chat

    والله من کامت کار نمیکنم چون شیوه درستی نیست و ماله این کار نیست
    مشکل شما هنگ کردن حلقه بود که گفتم بخاطر چیه و الانم از توضیحاتت متوجه نمیشم مشکلت چیه

    اگه مشکلت زمانیه که من دادم که بیشترشون کن !

تاپیک های مشابه

  1. ASP.Net chat room
    نوشته شده توسط Farhad.B.S در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: سه شنبه 05 اردیبهشت 1385, 20:07 عصر
  2. Send Message To Active Windows in Yahoo Chat
    نوشته شده توسط madmax در بخش VB.NET
    پاسخ: 4
    آخرین پست: جمعه 09 آبان 1382, 18:59 عصر
  3. آیا می‌خواهید در این سایت یک بخش Chat داشته باشیم؟
    نوشته شده توسط Doctor Sinohe در بخش گفتگو با مسئولین سایت، درخواست و پیشنهاد
    پاسخ: 14
    آخرین پست: دوشنبه 05 آبان 1382, 13:55 عصر
  4. نوشتن Chat تحت شبکه LAN
    نوشته شده توسط zehs_sha در بخش VB.NET
    پاسخ: 0
    آخرین پست: چهارشنبه 05 شهریور 1382, 08:59 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •