Memcached with PHP.
Wall Script
Follow Me:
Monday, February 13, 2012

Memcached with PHP.

Memcahced open source distributed memory object caching system it helps you to speeding up the dynamic web applications by reducing database server load. In this post I want to explain how I had implemented Memcached object caching system for demos.9lessons.info. This system is very helpful for high traffic media and blog related websites.

Memcached

Live Demo

Database
Sample database demos table contains id, title and link.
CREATE TABLE demos
(
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(300),
link VARCHAR(300),
);

First User Request
First request goes to database server at the same time data object storing in Memcached server.
Memcached

Second User Request
Second user request data comes from Memcached object.
Memcached

Memcached Installation
Lots of better resources available on web please follow the links. php_memcache.dll
INSTALLING MEMCACHED ON AMAZON LINUX AMI - QUICK AND EASY.
INSTALLING MEMCACHED ON Windows.
install Memcached on Xampp on Windows 7
Memcached for PHP 5.3 on Windows 7.

index.php
Contains PHP code.
<?php
include('db.php');
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

$key = md5('List 9lessons Demos'); // Unique Words
$cache_result = array();
$cache_result = $memcache->get($key); // Memcached object 

if($cache_result)
{
// Second User Request
$demos_result=$cache_result;
}
else
{
// First User Request 
$v=mysql_query("select * from demos order by id desc");
while($row=mysql_fetch_array($v))
$demos_result[]=$row; // Results storing in array
$memcache->set($key, $demos_result, MEMCACHE_COMPRESSED, 1200);
// 1200 Seconds
}

// Result
foreach($demos_result as $row)
{
echo '<a href='.$row['link'].'>'.$row['title'].'</a>';
}

?>

db.php
You have to change hostname, username, password and database name.
<?php
$mysql_hostname = "localhost";
$mysql_user = "username";
$mysql_password = "password";
$mysql_database = "database";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password)
or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong");
?>
Was this article helpful?
Thanks! Your feedback helps us to improve 9lessons.info


51 comments:

  1. OK..
    mantap bro....

    ReplyDelete
  2. so basically what wil be effected by implement this method..? fast render on webpage..? or what.? sorry, i'm not really understand...

    ReplyDelete
  3. I never tried memcache, now I see it's easy to use, thanks to you Sir!

    ReplyDelete
  4. How much faster is it ?

    ReplyDelete
  5. How to use memcache to cache dyanamic image?

    ReplyDelete
  6. easy than i thought

    ReplyDelete
  7. Watch out if the database response is "false", the memcached will save a string containing "false", so this:
    if($cache_result)

    will result false, when the memcached really has an answer. Its better to validet it with:

    if($cache_result === false)

    ReplyDelete
  8. it's same with wp super cache ?

    ReplyDelete
  9. @srini kitna deti hai? LOL :)
    Superb post, was working on the same concept :)

    ReplyDelete
  10. Thanks for this Srinivas :)

    Vishal

    ReplyDelete
  11. i have worked on memcache module, be careful while using memcache since often you dont want to memcache all your queries especially session or user data queries.
    The solution is to delete respective cache whenever data is updated.
    Njoy power of memcache - \m/

    ReplyDelete
  12. Are you sure about that your talking abnout "Memcached"? Should it be just "Memcache"?
    Memcached: http://www.php.net/manual/en/book.memcached.php
    Memcache: http://www.php.net/manual/en/book.memcache.php

    ReplyDelete
  13. Thank you for sharing, this is what i need it

    ReplyDelete
  14. hello,

    i am having a website which have more than 100,000 users. Will mem cache increase the performance ?
    If yes the how ?

    ReplyDelete
  15. Are you sure about that your talking abnout "Memcached"? Should it be just "Memcache"?
    Memcached: http://www.php.net/manual/en/book.memcached.php
    Memcache: http://www.php.net/manual/en/book.memcache.php

    ReplyDelete
  16. your demo link doesnt work

    ReplyDelete
  17. This is really nice brother....

    ReplyDelete
  18. What scheme Editor Did You Use For Illustration In this Article?

    ReplyDelete
  19. how to install memcache in ububtu 12.04?

    ReplyDelete
  20. I like your tutorial, but how can I implement on live web server or hosting provider?

    ReplyDelete
  21. I like your tutorial but how can I implement this on live web server or any hosting provider?

    ReplyDelete
  22. nice .... you got very useful things on your blog keep it up thnx

    ReplyDelete
  23. Its nice article on memcache. Thank you for sharing it.

    ReplyDelete
  24. Just to notice you that you tell you learn how to use memcachED with PHP but in the code you use memcachE

    ReplyDelete
  25. I wanted to implement memcached on windows but looks like it is not available for windows. Memcached is available only on Linux.

    ReplyDelete
  26. Warning: Memcache::connect(): Can't connect to localhost:11211, Connection refused (111) in /home/ajaybhulawat/sandbox/blr/memcache.php on line 13 Could not connect


    how to solve this?

    ReplyDelete
  27. how does it's works when an updated data on database?

    ReplyDelete
  28. EXCELLENT post.

    Can you tell me which network topology icons are those?

    Thanks in advance.

    ReplyDelete
  29. i think you are using Memcache while your post title related to Memcached

    ReplyDelete
  30. One question lets say we have page having new data after every 5 minutes user refresh page 2nd time system will fetch data from cache what about new data?

    ReplyDelete
  31. what is the difference between memcached & mamcache ?? i am confused.. !!!

    ReplyDelete
  32. really superb tutorial... I got scared to use memcache when I see a few other tutorials. But this is awesome. Thanks.

    ReplyDelete
  33. Am getting this error. pls help

    Fatal error: Class 'Memcache' not found in C:\wamp

    ReplyDelete
    Replies
    1. Make sure you need to enable php_memcache.dll in php.ini file and need to place that dll in ext directory , restart the apache server and download memcahce.exe file and run that one. Then you can get the correct out put.

      Delete
  34. currently i developed a web portal for multiple user.data arrived from data base it depends on user id so how can i implement on this scenario ?

    ReplyDelete
  35. the code is for memcache, NOT memcached

    ReplyDelete

Make in India