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

نام تاپیک: ناحیه بحرانی

  1. #1

    ناحیه بحرانی

    سلام

    راهی برای جلوگیری از ورود همزمان چندین کاربر به یه قسمت از کد php وجود داره؟

  2. #2
    کاربر دائمی آواتار abolfazl-z
    تاریخ عضویت
    دی 1390
    محل زندگی
    فکر
    پست
    1,056

    نقل قول: ناحیه بحرانی

    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک
    سلام

    راهی برای جلوگیری از ورود همزمان چندین کاربر به یه قسمت از کد php وجود داره؟
    سلام

    فایل php کل اش رو میشه قفل کرد و همچنین قسمت های داخلی را.
    تابع flock فکر کنم بهتون کمک کند.

  3. #3

    نقل قول: ناحیه بحرانی

    اینم یه نمونه کد پیشنهادی سیستم محدود کردن تعداد لاگین که یک همچین حالتی داره: https://barnamenevis.org/showthread.p...=1#post1307986

  4. #4

    نقل قول: ناحیه بحرانی

    فایل php کل اش رو میشه قفل کرد و همچنین قسمت های داخلی را.
    تابع flock فکر کنم بهتون کمک کند.
    پروسس دوم که میره سراغ باز کردن فایل بلاک میشه یا اینکه نمی تونه فایل رو باز کنه و با شکست رو به رو میشه؟

  5. #5
    کاربر دائمی آواتار abolfazl-z
    تاریخ عضویت
    دی 1390
    محل زندگی
    فکر
    پست
    1,056

    نقل قول: ناحیه بحرانی

    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک
    پروسس دوم که میره سراغ باز کردن فایل بلاک میشه یا اینکه نمی تونه فایل رو باز کنه و با شکست رو به رو میشه؟
    بله پروسس دوم متظر میموند که تا قفل باز بشود (یعنی پروسس قبلی کارش تموم بشه) و یادتون باشه که از set_time_limit حتما استفاده کنید تا برنامه با خطا رو به رو نشود.

    این لینکم بخونین بد نیست :

    مشاهده
    آخرین ویرایش به وسیله abolfazl-z : دوشنبه 28 بهمن 1392 در 19:05 عصر

  6. #6

  7. #7
    کاربر دائمی آواتار abolfazl-z
    تاریخ عضویت
    دی 1390
    محل زندگی
    فکر
    پست
    1,056

    نقل قول: ناحیه بحرانی

    لینک اصلاح شد.

  8. #8

    نقل قول: ناحیه بحرانی

    set_time_limit
    مطمئنید گزینه خوبیه؟! چون اگر برنامه مثلا تو ناحیه بحرانی قفل شه. اون موقع همیشه اون ناحیه قفل میمونه.


    if (!function_exists('sem_get')) {
    function sem_get($key) {
    return fopen(__FILE__ . '.sem.' . $key, 'w+');
    }
    function sem_acquire($sem_id) {
    return flock($sem_id, LOCK_EX);
    }
    function sem_release($sem_id) {
    return flock($sem_id, LOCK_UN);
    }
    }


    من یع همچین کدی رو پیدا کردم. نمی دونم تا چه اندازه استفاده از این کد میتونه safe باشه

  9. #9
    کاربر دائمی آواتار abolfazl-z
    تاریخ عضویت
    دی 1390
    محل زندگی
    فکر
    پست
    1,056

    نقل قول: ناحیه بحرانی

    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک
    مطمئنید گزینه خوبیه؟! چون اگر برنامه مثلا تو ناحیه بحرانی قفل شه. اون موقع همیشه اون ناحیه قفل میمونه.


    if (!function_exists('sem_get')) {
    function sem_get($key) {
    return fopen(__FILE__ . '.sem.' . $key, 'w+');
    }
    function sem_acquire($sem_id) {
    return flock($sem_id, LOCK_EX);
    }
    function sem_release($sem_id) {
    return flock($sem_id, LOCK_UN);
    }
    }


    من یع همچین کدی رو پیدا کردم. نمی دونم تا چه اندازه استفاده از این کد میتونه safe باشه
    نگاه کنید تابع flock کل فایل php رو قفل میکنه و اجازه خواندن/نوشتن (بستگی به انتخاب دارد) نمیدهد و زمانی که اجرای اسکریپت به پایان برسه قفل باز میشه.
    برای درک بهتر مثال زیر را انجام دهید :

    یک فایل php ایجاد کنید و کد زیر در آن را وارد کنید :
    <?php
    $o = fopen('test.php','r');
    flock($o,LOCK_SH);
    for($i=0;$i<=10;$i++)
    sleep(1);
    echo 'end('.date('i:s').')';
    ?>

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

  10. #10
    کاربر دائمی آواتار abolfazl-z
    تاریخ عضویت
    دی 1390
    محل زندگی
    فکر
    پست
    1,056

    نقل قول: ناحیه بحرانی

    درضمن تابع set_time_limit فقط باعث جلوگیری از بروز خطای maximum execution می شود. (اصلا لازم نیست اگر اجرای اسکریپتتون طولانی نمیشه)

  11. #11

    نقل قول: ناحیه بحرانی

    فقط یه سوال دیگه اگر اجرای اسکریپت به هر دلیلی خطا بده (توی ناحیه بحرانی) فایل قفل میمونه؟ یا اینکه با بسته شدن توصیفگر، قفل هم آزاد میشه؟

  12. #12
    کاربر دائمی آواتار abolfazl-z
    تاریخ عضویت
    دی 1390
    محل زندگی
    فکر
    پست
    1,056

    نقل قول: ناحیه بحرانی

    نقل قول نوشته شده توسط pswin.pooya مشاهده تاپیک
    فقط یه سوال دیگه اگر اجرای اسکریپت به هر دلیلی خطا بده (توی ناحیه بحرانی) فایل قفل میمونه؟ یا اینکه با بسته شدن توصیفگر، قفل هم آزاد میشه؟
    بله قفل آزاد میشه .

    سعی کنید خطاهاتون رو مدیریت کنید.

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

  1. الگوریتمهایی برای حل ناحیه بحرانی یا الگوریتم سمافور یا....
    نوشته شده توسط نغمه در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 129
    آخرین پست: شنبه 28 دی 1392, 14:13 عصر
  2. آموزش ناحیه بحرانی ::Critical Section
    نوشته شده توسط Farhad_Mohammadi در بخش مقالات مرتبط با Delphi/Win32
    پاسخ: 2
    آخرین پست: شنبه 05 اسفند 1385, 19:42 عصر
  3. پیاده سازی مانیتورها در دلفی ( ناحیه بحرانی )
    نوشته شده توسط Farhad_Mohammadi در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: جمعه 04 اسفند 1385, 03:52 صبح

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

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