UK WEB HOSTING FORUM FOR DISCUSSION ON WEB HOSTING SERVICE AND SUPPORT
LINUX HOSTING WINDOWS HOSTING PACKAGES SHOPPING CART OSCOMMERCE ZEN CART AGORA
ECOMMERCE HOSTING ASP MSSQL FRONTPAGE HOSTING PHP MYSQL HOSTING DISCUSSION FORUM
CPANEL RESELLER HOSTING DEDICATED SERVER VPS HOSTING PLESK VIRTUOZZO
Quick Search
Your forum announcement here!

  eUKhost's Official Web Hosting Forum > Technical Support > Tutorials / How to?

Reply
 
Thread Tools Display Modes
  #1 (permalink)  
Old 01-07-2008, 09:16
Rock's Avatar
Technical Support (eUKhost.com)
 
Join Date: Oct 2006
Location: localhost
Posts: 3,356
Send a message via MSN to Rock Send a message via Skype™ to Rock
Lightbulb MemCached, best caching option on Linux Web Servers !

MemCached is a generic purpose distributed high performance memory object caching system to use in speeding up dynamic database driven website hostings by caching data and objects in memory to reduce the amount the database needs to be read. It runs on port 11211 by default, so make sure to open it up in the server's firewall.

Memcached’s APIs provide a giant hash table distributed across multiple machines. When the table is full, subsequent inserts cause older data to be purged in least recently used order. Applications using memcached typically layer memcached requests and additions into code before falling back on a slower backing store, such as a database.

It uses libevent to scale to any number of open connections, uses non-blocking network I/O, refcounts internal objects (so objects can be in multiple states to multiple clients), & uses its own slab allocator and hash table so virtual memory never gets externally fragmented and allocations are guaranteed.

Selecting MemCache fom the Apache Built-in Modules when recompiling Apache [/scripts/easyapache in case of cPanel servers] it recompiles the module, but how it is used or rather how to make it work properly

Once the recompilation process has completed successfully, follow these steps to confirm that the compiled Apache module is working in full action

Create a phpinfo.php file as usual but with the following code within it..

PHP Code:
<?php
error_reporting
(E_ALL);
$memcache memcache_connect('localhost'11211);

if (
$memcache) {
        
$memcache->set("str_key""String to store in memcached");
        
$memcache->set("num_key"123);

        
$object = new StdClass;
        
$object->attribute 'test';
        
$memcache->set("obj_key"$object);

        
$array = Array('assoc'=>123345567);
        
$memcache->set("arr_key"$array);

        
var_dump($memcache->get('str_key'));
        
var_dump($memcache->get('num_key'));
        
var_dump($memcache->get('obj_key'));
}
else {
        echo 
"Connection to memcached failed";
}
?>
<?php phpinfo
(); ?>
Create the configuration file for the mem_cache daemon :
PHP Code:
touch /etc/memcached.conf 
Edit the above created file and paste the following code within it :
PHP Code:
#Memory a user can use
-m 16
# default port
-p 11211
# user to run daemon nobody/apache/www-data
-u nobody
# only listen locally
-l 127.0.0.1 
Create the startups files :
PHP Code:
touch /etc/init.d/memcached
chmod 
+/etc/init.d/memcached 
Edit the above created file and paste the following code within it :
PHP Code:
#!/bin/bash
#
# memcached This shell script takes care of starting and stopping
# standalone memcached.
#
. /etc/rc.d/init.d/functions
PATH
=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON
=/usr/local/bin/memcached
DAEMONBOOTSTRAP
=/usr/local/bin/start-memcached
DAEMONCONF
=/etc/memcached.conf
NAME
=memcached
DESC
=memcached
PIDFILE
=/var/run/$NAME.pid
[ -x $DAEMON ] || exit 0
[ -x $DAEMONBOOTSTRAP ] || exit 0
RETVAL
=0
start
() {
echo -
$"Starting $DESC: "
daemon $DAEMONBOOTSTRAP $DAEMONCONF
RETVAL
=$?
$RETVAL -eq 0 ] && touch $PIDFILE
echo
return 
$RETVAL
}
stop() {
echo -
$"Shutting down $DESC: "
killproc $NAME
RETVAL
=$?
echo
$RETVAL -eq 0 ] && rm -f $PIDFILE
return $RETVAL
}
# See how we were called.
case "$1" in
start
)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL
=$?
;;
status)
status $prog
RETVAL
=$?
;;
*)
echo $
"Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL 
Create the startup script :
PHP Code:
touch /usr/local/bin/start-memcached
chmod 
+/usr/local/bin/start-memcached 
Edit the above created file and paste the following code within it :
PHP Code:
#!/usr/bin/perl -w
# start-memcached
use strict;
if ($> != 
and $< != 0) {
print 
STDERR "Only root wants to run start-memcached.\n";
exit;
}
my $etcfile shift || "/etc/memcached.conf";
my $params = [];
my $etchandle;
# This script assumes that memcached is located at /usr/bin/memcached, and
# that the pidfile is writable at /var/run/memcached.pid
my $memcached "/usr/local/bin/memcached";
my $pidfile "/var/run/memcached.pid";
# If we don't get a valid logfile parameter in the /etc/memcached.conf file,
# we'll just throw away all of our in-daemon output. We need to re-tie it so
# that non-bash shells will not hang on logout. Thanks to Michael Renner for
# the tip
my $fd_reopened "/dev/null";
sub handle_logfile {
my ($logfile) = @_;
$fd_reopened $logfile;
}
sub reopen_logfile {
my ($logfile) = @_;
open *STDERR">>$logfile";
open *STDOUT">>$logfile";
open *STDIN">>/dev/null";
$fd_reopened $logfile;
}
# This is set up in place here to support other non -[a-z] directives
my $conf_directives = {
"logfile" => &handle_logfile
};
if (
open $etchandle$etcfile) {
foreach 
my $line (<$etchandle>) {
$line =~ s/#.*//go;
$line join ' 'split ' '$line;
next unless $line;
next if $line =~ /^-[dh]/o;
if (
$line =~ /^[^-]/o) {
my ($directive$arg) = $line =~ /^(.*?)s+(.*)/;
$conf_directives->{$directive}->($arg);
next;
}
push @$params$line;
}
}
unshift @$params"-u root" unless (grep $_ eq '-u', @$params);
$params join " ", @$params;
if (-
e $pidfile) {
open PIDHANDLE"$pidfile";
my $localpid = <PIDHANDLE>;
close PIDHANDLE;
chomp $localpid;
if (-
"/proc/$localpid") {
print 
STDERR "memcached is already running.\n";
exit;
} else {
`
rm -f $localpid`;
}
}
my $pid fork();
if (
$pid == 0) {
reopen_logfile($fd_reopened);
exec "$memcached $params";
exit(
0);
elsif (open PIDHANDLE,">$pidfile") {
print 
PIDHANDLE $pid;
close PIDHANDLE;
} else {
print 
STDERR "Can't write pidfile to $pidfile.\n";

Test the scripts :
PHP Code:
[root@test init.d]# /etc/init.d/memcached restart
Shutting down memcached: [ OK ]
Starting memcached: [ OK 
Review if the conf file is parsed/running correctly :
PHP Code:
[root@test init.d]# ps aux | grep memcached
nobody 8906 0.5 0.3 18248 16444 pts/0 S 13:55 0:00 /usr/local/bin/memcached -u root -m 16 -p 11211 -u nobody -l 127.0.0.1 
Add memcached as autostart daemon :
PHP Code:
[root@test init.d]# /sbin/chkconfig memcached on
[root@test init.d]# /sbin/chkconfig --list | grep memcached
memcached 0off 1off 2on 3on 4on 5on 6off 
Enjoy..
__________________

Rock _a.k.a._ Jack
Windows Hosting || Windows Reseller Hosting
Cloud Hosting 100% UPTIME! || Powerful Dedicated Servers
Follow eUKhost on Twitter || Join eUKhost Community on Facebook

For complaints, grievances or suggestions kindly email our FeedBack Dept.
Proper action will be taken accordingly & instantaneously!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 01-07-2008, 10:03
DPS Computing's Avatar
Moderator
 
Join Date: Apr 2007
Location: Manchester, United Kingdom
Posts: 7,504
Send a message via ICQ to DPS Computing Send a message via AIM to DPS Computing Send a message via MSN to DPS Computing Send a message via Yahoo to DPS Computing Send a message via Skype™ to DPS Computing
Default

Thanks for that very informative and colourful tutorial Rock .
__________________
David Smith
DPS Computing
http://www.dpscomputing.com (Computing, Reviews, News) - We're still plodding on adding new content and features (August 2011)
http://www.djdavid.co.uk - Massive update! (September 2011) - It's now not neglected!!
http://davidsmith.dpscomputing.com (My Personal Website) - New Site (10/2009)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off



All times are GMT. The time now is 03:13.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
UK Web Hosting by eUKHosting 3.1.0
UK Web Hosting by eUKHosting 3.1.0
Copyright © 2001-2012, eUKhost LTD. All rights reserved.

 


UK VPS Hosting
VPS Hosting plans

Dedicated Server Hosting
Dedicated Server plans

VoIP Dedicated Servers
Asterisk, Trixbox Dedicated Servers

Business Web Hosting
100% uptime Hosting

UK Cpanel Hosting
cPanel Shared Hosting

Domain Hosting
Cheap Domains & Hosting Plans

UK Reseller Hosting
Reseller Web Hosting

Windows Hosting
Windows Shared Hosting

Windows VPS

Windows VPS Hosting

Semi Dedicated Servers
Semi-Dedicated Hosting

Dedicated Server Mirroring
Dedicated Server Mirroring

Webhosting Knowledgebase
Frequently asked Questions

Web Hosting Blog
eUKhost Blog

Web Hosting Support
Support Helpdesk

UK Data Center
eUKhost Datacenter

Web Hosting Forum
eUKhost Forum

Support Tutorials
Online Flash Tutorials

Offsite Back-up Plans
Remote Backup Service

ColdFusion Hosting
ColdFusion Web Hosting
 
 

Android and Apple App


knowledgebase articles
eUKhost.com Services

Pre-Sales Questions
Pre-sales FAQ's

Domain Names
Domain registration FAQ's

cPanel Hosting
cPanel Hosting FAQ's

Windows Web Hosting
Plesk Control Panel

Reseller Hosting
Reseller Hosting FAQ's

VPS Hosting
Virtual Private Server

Semi-Dedicated Servers
Semi-Dedicated FAQ's

Dedicated Servers
Dedicated Server Hosting

Joomla Hosting
Joomla Web Hosting

Mambo Hosting
Mambo Web Hosting

Magento Hosting
Magento Web Hosting

Wordpress Hosting
Wordpress Web Hosting

 

Web Hosting Affiliate Program
 

popular blog categories

UK Web Hosting
UK Hosting articles

Dedicated Server Hosting
Dedicated Server guidelines

VPS Hosting
VPS hosting articles

cPanel Hosting
cPanel Hosting articles

Linux Operating System
Linux Operating techniques

Windows Web Hosting
Windows plesk articles