بازگشت   پی سی سیتی > کامپیوتر اینترنت و شبکه Computer internet > زبان های برنامه نویسی Programming

زبان های برنامه نویسی Programming بحث در مورد زبانهای مختلف برنامه نویسی

 
 
ابزارهای موضوع نحوه نمایش
Prev پست قبلی   پست بعدی Next
  #1  
قدیمی 06-04-2013
دانه کولانه آواتار ها
دانه کولانه دانه کولانه آنلاین نیست.
    مدیر کل سایت
        
کوروش نعلینی
 
تاریخ عضویت: Jun 2007
محل سکونت: کرمانشاه
نوشته ها: 12,700
سپاسها: : 1,382

7,486 سپاس در 1,899 نوشته ایشان در یکماه اخیر
دانه کولانه به Yahoo ارسال پیام
پیش فرض Memcached چیست ؟ آموزش نصب کش Memcached در لینوکس

Memcached چیست ؟ آموزش نصب کش Memcached در لینوکس


قبل از هر چیز نگاه کنید که چه کسانی دارند از این سیستم استفاده میکنند :






ممكش(Memchache) برنامه اي است كه سمت يك سرور وب نصب و اجرا مي شود.


از اين نظر كه هميشه بايد در حال اجرا باشد مانند MySql است ولي برخلاف MySql كه براي وبسايت ها وسيله حياتي است و امروزه هر هاستي حتي برخي هاست هاي مجاني آن را ارائه مي دهند،‌ ممكش اين طور نيست و تا يك هاست مجازي يا اختصاصي نگيريد و به قسمت SSH يا اجراي Command دسترسي نداشته باشيد خبري هم از ممكش نخواهد بود.


اما چرا ممكش خيلي كم استفاده مي شود و بيشتر وبسايت ها حتي نام ممكش به گوششان نخورده چه برسد به اين كه از آن استفاده كنند!!؟؟





جواب سوال اين است كه ممكش تنها براي وبسايت هايي مفيد است كه هم تعداد درخواست هاي زيادي در واحد زمان و از چندين كاربر آنلاين به سمت سرور ميرود كه اين در وبسايت هايي كه از ايجكس(Ajax) زياد استفاده مي كنند و كاربر زياد دارند مشهود است و هم اينكه در هر درخواستي چندين بار از ديتابيس استفاده مي كنند. پس تا وبسايتي اين دو شرط را نداشته باشد نيازي هم به ممكش ندارد و حتي اگر وبسايتي هم اين دوشرط را داشت بايد ديد كه MySql آن با در دست داشتن منابع مختلف سروري كه در اختيار دارد از جمله سرعت هارد و قدرت cpu آيا كشش جوابگويي به آن همه اجراي كواري را دارد يا اينكه باعث مشغول شدن زياد پردازشگر و معطل كردن درخواست ها مي شود كه در اين حالت نياز به يك برنامه مانند ممكش ديده مي شود كه تنها از منبع حافظه اصلي(Ram) كه سرعت غير قابل مقايسه با حافظه جانبي(Hard) كه MySql براي نگهداري مقدارها بهره ميگيرد دارد استفاده كند و مثلا نتايجي كه از اجراي كواري Select از ديتابيس خارج ميشود را در مدت زمان كوتاهي نگه دارد تا درخواست هاي مشابه با اجراي آن كواري از آن نتيجه گذشته استفاده كنند و نيازي به اجراي دوباره آن نباشد.




توجه: ممكش براي كش كردن داده‌ها در حالت سرورهاي توزيع شده مناسب است؛ هرچند در يك سرور واحد نيز به كار مي‌رود؛ اگر سرور توزيع شده نداريد بهتر است از Alternative PHP Cache)APC) استفاده كنيد، چون در اين حالت سرعت بالاتري دارد.






گام هاي زير در سيستم عامل لينوكس نسخه CentOS كاملا تست شده و جواب داده است


  1. ابتدا وارد SSH سرور مي شويم.
  2. قبل ار نصب خود ممكش نياز است كه دستورات زير را اجرا كنيم چون ممكش وابسته است به libevent
    cd /usr/local/src
    curl -O http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz
    tar xzvf libevent-1.4.9-stable.tar.gz
    cd libevent-1.4.9-stable
    ./configure --prefix=/usr/local
    make
    make install
    يا
    yum install libevent
  3. براي نصب ممكش از yum استفاده مي كنيم. اما قبل از آن yum را تقويت مي كنيم با اجراي دستورات زير
  4. حال نوبت به نصب خود ممكش ميرسد با اجراي تك دستور زير
    yum install --enablerepo=rpmforge memcached
    • توجه: ممكن است با اشكال زير مواجه شويد
      Error: Missing Dependency: libevent-1.1a.so.1 is needed by package 1: nfs-utils-1.0.9-40.el5.i386 (installed)...
      براي رفع آن دستور زير را اجرا مي كنيم تا برنامه nfs-utils و portmap packages حذف شود (منبع)
      yum remove portmap nfs-utils
    ممكش نصب شد حالا چطور آن را كنترل كنيم:
    • ريست كردن ممكش
      service memcached restart
    • قرار دادن اجراي خود به خود ممكش در هنگام بوت
      chkconfig memcached on
    • اجراي ممكش
      service memcached start
      يا
      memcached -u root -d
    • توقف ممكش
      service memcached stop
      يا
      pkill memcached
    • اطلاع از اجراي ممكش
      ps aux | grep memcached
      كه اگر در دو خط مانند زير خروجي دهد مي فهميم كه در حال اجراست
      nobody 11365 0.5 1.8 67972 14596 ? Ssl 07:47 1:33 memcached -d -p 11211 -u nobody
      -c 1024 -m 64 root 23807 0.0 0.0 3912 676 pts/1 S+ 12:59 0:00 grep memcached
  5. تا اينجا ممكش را راه اندازي كرديم ولي هنوز قابل دسترسي از طريق php نيست. براي اينكه بتوانيد در كدهاي php از طريق توابع تعريف شده اي با ممكش كار كنيد لازم است PECL ممكش را نيز به سرورتان اضافه كنيد. پس دستور زير را اجرا كنيد
    pecl install memcached
    يا
    cd /usr/local/src/
    wget http://pecl.php.net/get/memcache-2.1.2.tgz
    tar zxvf memcache-2.1.2.tgz
    cd memcache-2.1.2
    phpize
    ./configure
    make & make install
    • توجه: ممكن است دستور pecl تعريف نشده باشد براي همين از قطعه دستور دوم ناچاريد استفاده كنيد
    • توجه مهم: ممكن است در اجراي هركدام از دستورات بالا با خطايي شبيه زير مواجه شويد
      configure: error: memcache support requires ZLIB. Use --with-zlib-dir= to specify
      prefix where ZLIB include and library are located ERROR: `/var/cache/php-pear/memcache-2.2.5/configure
      --enable-memcache-session=yes' failed
      پس بايد قبل از آن zlib-devel را با دستور زير نصب كرد
      yum install zlib-devel
    • توجه مهم: ممكن است در اجراي هركدام از دستورات بالا با خطايي شبيه زير مواجه شويد
      configure: error: memcached support requires libmemcached. Use --with-libmemcached-dir=<DIR>
      to specify the prefix where libmemcached headers and library are located
      ERROR: `/tmp/tmpBwSimh/memcached-1.0.1/configure' failed
      يا
      "memcache.lo" is not a valid libtool object
      براي رفع آن پيشنهاد مي شود اصلا از شيوه زير براي نصب pecl مربوطه استفاده كنيد (منبع)
      cd /usr/src/
      wget http://pecl.php.net/get/memcache-2.2.4.tgz
      tar -zxvf memcache-2.2.4.tgz
      cd memcache-2.2.4
      phpize && ./configure --enable-memcache && make

      cp modules/memcache.so /usr/lib/php/modules/
      در ادامه با اجراي دستور زير مرحله بعدي نيز تمام مي شود
      touch /etc/php.d/memcached.ini
      echo 'extension=memcache.so' > /etc/php.d/memcached.ini
  6. فايلي با نام memcache.ini در پوشه احتمالا /etc/php.d سرور اگر نيست ساخته و آن را باز كنيد و خط زير را
    extension=memcache.so
    اگر نيست وارد آن كنيد و اگر هست مطمئن شويد كه اين خط با علامت ';' شروع نشده باشد وگرنه اين علامت را حذف كنيد
    • توجه: مي توانستيم به جاي اين فايل از php.ini موجود در پوشه احتمالا /etc/ هم استفاده كنيم.
  7. در نهايت بايد Apache سرور ريست شود تا ممكش قابل استفاده در كدهاي php شود.
    service httpd restart
    يا
    /etc/init.d/httpd restart
  8. حال براي اطمينان از موفقيت نصب ممكش كافي است دستور زير را در php اجرا كنيم
    phpinfo();
    و بخشي با عنوان Memcache را در خروجي آن مانند شكل زير بيابيم :




    حال در كدهاي php مي توانيد از دستورات اضافه شده براي كار با ممكش مانند دستورات زير استفاده كنيد
    $link=memcache_connect ($mcservername,$mcport);
    memcache_set($link, $key, $value,MEMCACHE_COMPRESSED, $expire);
    $value = memcache_get($link,$key);
    memcache_delete($link,$key);
    memcache_close($link);






توضيحات تکميلي :

همانطور كه مي دانيد سشن ها در فايل ذخيره مي شوند يعني باز هم مثل ديتابيس در هارد !!! خوشبختانه ممكش فكر اينجا را هم كرده و اگر ممكش را به درستي نصب كرده باشيد و از سشن هم استفاده مي كنيد مي توانيد با تغيير دادن دو خصوصيت زير كه در فايل php.ini وجود دارد

session.save_handler = files
session.save_path = "/var/lib/php/session"

به مقدار هاي زير
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"

كاري كنيد كه از اين به بعد سشن ها اتوماتيك در Ram خوانده و نوشته شوند كه اين خود بسيار سرعت را بالا خواهد برد.
براي اثر گذاري اين تغيير دوباره مرحله 7 را انجام دهيد


منبع سایت شگردها
__________________
مرا سر نهان گر شود زير سنگ -- از آن به كه نامم بر آيد به ننگ
به نام نكو گر بميــرم رواست -- مرا نام بايد كه تن مرگ راست




ویرایش توسط دانه کولانه : 06-04-2013 در ساعت 08:58 PM
پاسخ با نقل قول
 

برچسب ها
php, آموزش, برنامه نویسی, دیتابیس


کاربران در حال دیدن موضوع: 1 نفر (0 عضو و 1 مهمان)
 

مجوز های ارسال و ویرایش
شما نمیتوانید موضوع جدیدی ارسال کنید
شما امکان ارسال پاسخ را ندارید
شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
شما نمیتوانید پست های خود را ویرایش کنید

BB code is فعال
شکلک ها فعال است
کد [IMG] فعال است
اچ تی ام ال غیر فعال می باشد



اکنون ساعت 07:10 PM برپایه ساعت جهانی (GMT - گرینویچ) +3.5 می باشد.



Powered by vBulletin® Version 3.8.4 Copyright , Jelsoft Enterprices مدیریت توسط کورش نعلینی
استفاده از مطالب پی سی سیتی بدون ذکر منبع هم پیگرد قانونی ندارد!! (این دیگه به انصاف خودتونه !!)
(اگر مطلبی از شما در سایت ما بدون ذکر نامتان استفاده شده مارا خبر کنید تا آنرا اصلاح کنیم)


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




  پیدا کردن مطالب قبلی سایت توسط گوگل برای جلوگیری از ارسال تکراری آنها