SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
APC & Memcache the High
    Performance Duo
    Dutch PHP Conference 2010


         Ilia Alshanetsky
           http://ilia.ws/


                                1
What is APC?

• Alternative PHP Cache
• Primarily designed to accelerate script
 performance via opcode caching

• Extends opcode caching to facilitate user-data
 caching

• Actively maintained & well supported


                                                   2
Opcode Caching
     Default Mode                                                            With APC
                                                                                     PHP Script
                  PHP Script




                                                   APC
                                                                                     Opcode Cache


                  Zend Compile




                                                     Zend Compile           No       Data Cached?




                  Zend Execute
                                                                                         Yes
                                                    Cache Opcode




Function/Method
                                 Require/Include
      Call                                                                           Zend Execute




                                                                   Function/Method
                                                                                                    Require/Include
                                                                         Call




                                                                                                                      3
APC User-Cache

• Allows you to apply the same caching logic to
 your data as applied to PHP scripts.




Slide Motto:
  Not everything has to be real-time!



                                                  4
APC in Practice
// store an array of values for 1 day, referenced by "identifier"
if (!apc_add("identifier", array(1,2,3), 86400)) {
    // already exists? let's update it instead
    if (!apc_store("identifier", array(1,2,3), 86400)) {
        // uh, oh, b0rkage
    }
}

$ok = null;
// fetch value associated with "identified" and
// put success state into $ok variable
$my_array = apc_fetch("identifier", $ok);
if ($ok) {
    // changed my mind, let's delete it
    apc_delete("identifier");
}



                                                                    5
Let’s be lazy

// create or update an array of values for 1 day
if (!apc_store("identifier", array(1,2,3), 86400)) {
  // uh, oh, b0rkage
  mail("gopal, brian, kalle", "you broke my code", "fix it!");
}




 If you don’t care whether your are adding or updating
 values you can just use apc_store() and keep your
 code simpler



                                                                 6
Don’t Delete
• Deleting from cache is expensive as it may need
 to re-structure internal hash tables.

    • Rely on auto-expiry functionality instead
    • Or an off-stream cron job to clean up stale
      cache entries

• In many cases it is simpler just to start from
 scratch.

      apc_clear_cache(“user”)

                                                    7
Installing APC
# Unix

sudo bash (open root shell)

pecl install apc (configure, compile & install APC)

# Windows

Copy the php_apc.dll file into your php’s ext/
directory

# Common

Enable APC from your php.ini file

                                                     8
Advantages of APC

• If you (or your ISP) uses opcode caching,
 chances are it is already there.

• Really efficient at storing simple types (scalars
 & arrays)

• Really simple to use, can’t get any easier…
• Fairly stable


                                                    9
APC Limitations


• PHP only, can’t talk to other “stuff ”
• Not distributed, local only
• Opcode + User cache == all eggs in one basket
• Could be volatile



                                                  10
Memcached

• Interface to Memcached - a distributed caching
 system

• Provides Object Oriented interface to caching
 system

• Offers a built-in session handler
• Can only be used for “user” caching
• Purpose built, so lots of nifty features

                                                   11
Memcache vs Memcached

• Memcached Advantages
  • Faster
    • Igbinary serializer
    • fastlz compression
  • Multi-Server Interface
  • Fail-over callback support

                                 12
Basics in Practice
$mc = new MemCached();

// connect to memcache on local machine, on default port
$mc->addServer('localhost', '11211');

// try to add an array with a retrieval key for 1 day
if (!$mc->add('key', array(1,2,3), 86400)) {
    // if already exists, let's replace it
    if ($mc->replace('key', array(1,2,3), 86400)) {
        die("Critical Error");
    }
}

// let's fetch our data
if (($data = $mc->get('key')) !== FALSE) {
    // let's delete it now
    $mc->delete('key'); // RIGHT NOW!
}


                                                           13
Data Retrieval Gotcha(s)
$mc = new MemCached();
$mc->addServer('localhost', '11211');


$mc->add('key', 0);


if (!($data = $mc->get('key'))) {
  die("Not Found?"); // not true
  // The value could be 0,array(),NULL,””
  // always compare Memcache::get() result to
  // FALSE constant in a type-sensitive way (!== FALSE)
}

// The “right” way!
if (($data = $mc->get('key')) !== FALSE) {
  die("Not Found");
}


                                                          14
Data Retrieval Gotcha(s)
$mc = new MemCached();
$mc->addServer('localhost', '11211');

$mc->add('key', FALSE);

if (($data = $mc->get('key')) !== FALSE) {
  die("Not Found?"); // not true
  // The value could be FALSE, you
  // need to check the response code
}

// The “right” way!
if (
       (($data = $mc->get('key')) !== FALSE)
       &&
       ($mc->getResultCode() != MemCached::RES_SUCCESS)
) {
  die("Not Found");
}

                                                          15
Interface Basics Continued...
$mc = new MemCached();
// on local machine we can connect via Unix Sockets for better speed
$mc->addServer('/var/run/memcached/11211.sock', 0);

// add/or replace, don't care just get it in there
// without expiration parameter, will remain in cache “forever”
$mc->set('key1', array(1,2,3));

$key_set = array('key1' => “foo”, 'key1' => array(1,2,3));

// store multiple keys at once for 1 hour
$mc->setMulti($key_set, 3600);

// get multiple keys at once
$data = $mc->getMulti(array_keys($key_set));
/*
array(                                 For multi-(get|set), all   ops
    'key1' => ‘foo’
    'key2' => array(1,2,3)                  must succeed for
)
*/
                                            successful return.
                                                                        16
Multi-Server Environment

$mc = new MemCached();

// add multiple servers to the list
// as many servers as you like can be added
$mc->addServers(
     array('localhost', 11211, 80), // high-priority 80%
     array('192.168.1.90', 11211, 20)// low-priority 20%
);

// You can also do it one at a time, but this is not recommended
$mc->addServer('localhost', 11211, 80);
$mc->addServer('192.168.1.90', 11211, 20);

// Get a list of servers in the pool
$mc->	
  getServerList();
// array(array(‘host’ => … , ‘port’ => … ‘weight’ => …))



                                                                   17
Data Segmentation
    • Memcached interface allows you to store
      certain types of data on specific servers
$mc = new MemCached();
$mc->addServers( … );

// Add data_key with a value of “value” for 10 mins to server
// identified by “server_key”
$mc->addByKey('server_key', 'data_key', 'value', 600);

// Fetch key from specific server
$mc->getByKey('server_key', 'data_key');

// Add/update key on specific server
$mc->setByKey('server_key', 'data_key', 'value', 600);

// Remove key from specific server
$mc->deleteByKey('server_key', 'data_key');

                                                                18
And there is more ...
• The specific-server interface also supports multi-(get|set)

$mc = new MemCached();
$mc->addServers( … );

$key_set = array('key1' => “foo”, 'key1' => array(1,2,3));

// store multiple keys at once for 1 hour
$mc->setMultiByKey('server_key', $key_set, 3600);

// get multiple keys at once
$data = $mc->getMultiByKey('server_key', array_keys($key_set));




                                                                  19
Delayed Data Retrieval

• One of the really neat features of Memcached
 extension is the ability to execute the “fetch”
 command, but defer the actual data retrieval
 until later.



• Particularly handy when retrieving many keys
 that won’t be needed until later.



                                                   20
Delayed Data Retrieval

$mc = new MemCached();
$mc->addServer('localhost', '11211');

$mc->getDelayed(array('key')); // parameter is an array of keys

/* some PHP code that does “stuff” */

// Fetch data one record at a time
while ($data = $mc->fetch()) { ... }

// Fetch all data in one go
$data = $mc->fetchAll();




                                                                  21
Atomic Counters
$mc = new MemCached();
$mc->addServer('localhost', 11211);

// initialize counter to 1
$mc->set('my_counter', 1);

// increase count by 1
$mc->increment('my_counter');

// increase count by 10
$mc->increment('my_counter', 10);

// decrement count by 1
$mc->decrement('my_counter');

// decrement count by 10
$mc->decrement('my_counter', 10);


                                      22
Counter Trick
$mc = new MemCached();
$mc->addServer('localhost', 11211);

// add key position if does not already exist
if (!$mc->add('key_pos', 1)) {
    // otherwise increment it
    $position = $mc->increment('key_pos');
} else {
    $position = 1;
}

// add real value at the new position
$mc->add('key_value_' . $position, array(1,2,3));



     • Simplifies cache invalidation
     • Reduces lock contention (or eliminates it)
                                                    23
Data Compression
• In many cases performance can be gained by
 compressing large blocks of data. Since in most cases
 network IO is more expensive then CPU speed + RAM.
     $mc = new MemCached();
     $mc->addServer('localhost', 11211);
     // enable compression
     $mc->setOption(Memcached::OPT_COMPRESSION, TRUE);

            Related INI settings (INI_ALL)
            Other possible value is zlib
            memcached.compression_type=fastlz

            minimum compression rate
            memcached.compression_factor=1.3

            minimum data size to compress
            memcached.compression_threshold=2000

                                                         24
PHP Serialization

If you are using memcached to store complex data type
(arrays & objects), they will need to be converted to
strings for the purposes of storage, via serialization.



Memcached can make use of igbinary serializer that
works faster (~30%) and produces more compact data set
(up-to 45% smaller) than native PHP serializer.

           http://github.com/phadej/igbinary

                                                          25
Enabling Igbinary
Install Memcached extension with
--enable-memcached-igbinary

$mc = new MemCached();
$mc->addServer('localhost', 11211);

// use Igbinary serializer
$mc->setOption(
   Memcached::OPT_SERIALIZER,
   Memcached::SERIALIZER_IGBINARY
);




                                      26
Utility Methods
                                Array
                                (
                                	
  	
  	
  	
  [server:port]	
  =>	
  Array
                                	
  	
  	
  	
  	
  	
  	
  	
  (
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [pid]	
  =>	
  4933
$mc = new MemCached();          	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [uptime]	
  =>	
  786123
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [threads]	
  =>	
  1
$mc->addServer('localhost', 11211);
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [time]	
  =>	
  1233868010
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [pointer_size]	
  =>	
  32
// memcached statistics gathering
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [rusage_user_seconds]	
  =>	
  0
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [rusage_user_microseconds]	
  =>	
  140000
$mc->getStats();                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [rusage_system_seconds]	
  =>	
  23
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [rusage_system_microseconds]	
  =>	
  210000
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [curr_items]	
  =>	
  145
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [total_items]	
  =>	
  2374
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [limit_maxbytes]	
  =>	
  67108864
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [curr_connections]	
  =>	
  2
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [total_connections]	
  =>	
  151
// clear all cache entries      	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [a]	
  =>	
  3
$mc->flush();                   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [bytes]	
  =>	
  20345
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [cmd_get]	
  =>	
  213343
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [cmd_set]	
  =>	
  2381
// clear all cache entries      	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [get_hits]	
  =>	
  204223
// in 10 minutes                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [get_misses]	
  =>	
  9120
$mc->flush(600);                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [evictions]	
  =>	
  0
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [bytes_read]	
  =>	
  9092476
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [bytes_written]	
  =>	
  15420512
                                	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  [version]	
  =>	
  1.2.6
                                	
  	
  	
  	
  	
  	
  	
  	
  )
                                )
                                                                                                                               27
Installing Memcached


Download memcached from http://
www.memcached.org and compile it.

Download libmemcached from http://tangent.org/552/
libmemcached.html and compile it.

pecl install memcached (configure, make, make install)

Enable Memcached from your php.ini file



                                                        28
Memcached Session Handler

# Session settings

session.save_handler # set to “memcached

session.save_path # set to memcache host server:port

memcached.sess_prefix # Defaults to memc.sess.key.

# Locking Controls

# Whether to enable session lock, on by default
memcached.sess_locking

# Maximum number of microseconds to wait on a lock
memcached.sess_lock_wait



                                                       29
Advantages of Memcache

• Allows other languages to talk to it
• One instance can be shared by multiple servers
• Failover & redundancy
• Nifty Features
• Very stable


                                                   30
It is not perfect because?


• Slower then APC, especially for array storage
• Requires external daemon
• You can forget about it on
 shared hosting




                                                  31
That’s all folks



       Any Questions?

  Slides at: http://ilia.ws
Comments: http://joind.in/1554
                                 32
APC Configuration

apc.enable # enable APC
apc.enable_cli # enable for CLI sapi
apc.max_file_size # max PHP file to be cached
apc.stat # turn off ONLY if your files never change
apc.file_update_protection # good idea if you edit files on
live environment

apc.filters # posix (ereg) expressions to filter out files
from being cached

apc.mmap_file_mask # /tmp/apc.XXXXXX (use mmap IO, USE IT!)
apc.shm_segments # if not using mmap IO, otherwise 1
apc.shm_size # how much memory to use




                                                              33
Make PHBs Happy




                 ✴   Pretty graphics require GD extension


• For raw data you can use the apc_cache_info()
 and apc_sma_info() functions.
                                                            34

Más contenido relacionado

La actualidad más candente

Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objectsjulien pauli
 
Ansible : what's ansible & use case by REX
Ansible :  what's ansible & use case by REXAnsible :  what's ansible & use case by REX
Ansible : what's ansible & use case by REXSaewoong Lee
 
APC & Memcache the High Performance Duo
APC & Memcache the High Performance DuoAPC & Memcache the High Performance Duo
APC & Memcache the High Performance DuoAnis Berejeb
 
The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)Fabien Potencier
 
Managing themes and server environments with extensible configuration arrays
Managing themes and server environments with extensible configuration arraysManaging themes and server environments with extensible configuration arrays
Managing themes and server environments with extensible configuration arraysChris Olbekson
 
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015Fernando Hamasaki de Amorim
 
When symfony met promises
When symfony met promises When symfony met promises
When symfony met promises Marc Morera
 
Php on the desktop and php gtk2
Php on the desktop and php gtk2Php on the desktop and php gtk2
Php on the desktop and php gtk2Elizabeth Smith
 
Always On, Multi-Site Design Considerations
Always On, Multi-Site Design ConsiderationsAlways On, Multi-Site Design Considerations
Always On, Multi-Site Design ConsiderationsJohn Martin
 
Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Adam Tomat
 
Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)julien pauli
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterZendCon
 
Effective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersEffective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersMarcin Chwedziak
 
Php Development With Eclipde PDT
Php Development With Eclipde PDTPhp Development With Eclipde PDT
Php Development With Eclipde PDTBastian Feder
 
Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009Bastian Feder
 
Herd your chickens: Ansible for DB2 configuration management
Herd your chickens: Ansible for DB2 configuration managementHerd your chickens: Ansible for DB2 configuration management
Herd your chickens: Ansible for DB2 configuration managementFrederik Engelen
 
Migrating PriceChirp to Rails 3.0: The Pain Points
Migrating PriceChirp to Rails 3.0: The Pain PointsMigrating PriceChirp to Rails 3.0: The Pain Points
Migrating PriceChirp to Rails 3.0: The Pain PointsSteven Evatt
 

La actualidad más candente (19)

Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objects
 
Ansible : what's ansible & use case by REX
Ansible :  what's ansible & use case by REXAnsible :  what's ansible & use case by REX
Ansible : what's ansible & use case by REX
 
APC & Memcache the High Performance Duo
APC & Memcache the High Performance DuoAPC & Memcache the High Performance Duo
APC & Memcache the High Performance Duo
 
The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)
 
Managing themes and server environments with extensible configuration arrays
Managing themes and server environments with extensible configuration arraysManaging themes and server environments with extensible configuration arrays
Managing themes and server environments with extensible configuration arrays
 
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
 
When symfony met promises
When symfony met promises When symfony met promises
When symfony met promises
 
Php on the desktop and php gtk2
Php on the desktop and php gtk2Php on the desktop and php gtk2
Php on the desktop and php gtk2
 
Always On, Multi-Site Design Considerations
Always On, Multi-Site Design ConsiderationsAlways On, Multi-Site Design Considerations
Always On, Multi-Site Design Considerations
 
Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018
 
Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
 
Effective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 DevelopersEffective Doctrine2: Performance Tips for Symfony2 Developers
Effective Doctrine2: Performance Tips for Symfony2 Developers
 
Anatomy of a reusable module
Anatomy of a reusable moduleAnatomy of a reusable module
Anatomy of a reusable module
 
Php Development With Eclipde PDT
Php Development With Eclipde PDTPhp Development With Eclipde PDT
Php Development With Eclipde PDT
 
Puppet
PuppetPuppet
Puppet
 
Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009Eclipse Pdt2.0 26.05.2009
Eclipse Pdt2.0 26.05.2009
 
Herd your chickens: Ansible for DB2 configuration management
Herd your chickens: Ansible for DB2 configuration managementHerd your chickens: Ansible for DB2 configuration management
Herd your chickens: Ansible for DB2 configuration management
 
Migrating PriceChirp to Rails 3.0: The Pain Points
Migrating PriceChirp to Rails 3.0: The Pain PointsMigrating PriceChirp to Rails 3.0: The Pain Points
Migrating PriceChirp to Rails 3.0: The Pain Points
 

Destacado

Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化isnull
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规isnull
 
大型应用软件架构的变迁
大型应用软件架构的变迁大型应用软件架构的变迁
大型应用软件架构的变迁isnull
 
淘宝分布式数据处理实践
淘宝分布式数据处理实践淘宝分布式数据处理实践
淘宝分布式数据处理实践isnull
 
我的Ubuntu之旅
我的Ubuntu之旅我的Ubuntu之旅
我的Ubuntu之旅isnull
 
Barcelona apc mem2010
Barcelona apc mem2010Barcelona apc mem2010
Barcelona apc mem2010isnull
 
雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享isnull
 
阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训isnull
 
Daniela Barcelo Creative Director Portfolio 2014
Daniela Barcelo Creative Director Portfolio 2014Daniela Barcelo Creative Director Portfolio 2014
Daniela Barcelo Creative Director Portfolio 2014Daniela Barceló
 
Mysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationMysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationisnull
 
Designofhtml5
Designofhtml5Designofhtml5
Designofhtml5isnull
 
张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式isnull
 
Data on the web
Data on the webData on the web
Data on the webisnull
 
杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享isnull
 
基于Web的项目管理工具redmine
基于Web的项目管理工具redmine基于Web的项目管理工具redmine
基于Web的项目管理工具redmineisnull
 
Yui3 初探
Yui3 初探Yui3 初探
Yui3 初探isnull
 
الظواهر الجيولوجية
الظواهر الجيولوجيةالظواهر الجيولوجية
الظواهر الجيولوجيةguestc9f9390
 
Tsung
Tsung Tsung
Tsung isnull
 

Destacado (20)

Mysql开发与优化
Mysql开发与优化Mysql开发与优化
Mysql开发与优化
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
 
Scrum
ScrumScrum
Scrum
 
大型应用软件架构的变迁
大型应用软件架构的变迁大型应用软件架构的变迁
大型应用软件架构的变迁
 
淘宝分布式数据处理实践
淘宝分布式数据处理实践淘宝分布式数据处理实践
淘宝分布式数据处理实践
 
我的Ubuntu之旅
我的Ubuntu之旅我的Ubuntu之旅
我的Ubuntu之旅
 
Barcelona apc mem2010
Barcelona apc mem2010Barcelona apc mem2010
Barcelona apc mem2010
 
雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享雷志兴 百度前端基础平台与架构分享
雷志兴 百度前端基础平台与架构分享
 
阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训阿里巴巴 招聘技巧培训
阿里巴巴 招聘技巧培训
 
Daniela Barcelo Creative Director Portfolio 2014
Daniela Barcelo Creative Director Portfolio 2014Daniela Barcelo Creative Director Portfolio 2014
Daniela Barcelo Creative Director Portfolio 2014
 
Mysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationMysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimization
 
Designofhtml5
Designofhtml5Designofhtml5
Designofhtml5
 
张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式张克军 豆瓣前端团队的工作方式
张克军 豆瓣前端团队的工作方式
 
Data on the web
Data on the webData on the web
Data on the web
 
杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享
 
基于Web的项目管理工具redmine
基于Web的项目管理工具redmine基于Web的项目管理工具redmine
基于Web的项目管理工具redmine
 
Va+Hispanic Marketing
Va+Hispanic MarketingVa+Hispanic Marketing
Va+Hispanic Marketing
 
Yui3 初探
Yui3 初探Yui3 初探
Yui3 初探
 
الظواهر الجيولوجية
الظواهر الجيولوجيةالظواهر الجيولوجية
الظواهر الجيولوجية
 
Tsung
Tsung Tsung
Tsung
 

Similar a Dutch php conference_apc_mem2010

Zend Con 2008 Slides
Zend Con 2008 SlidesZend Con 2008 Slides
Zend Con 2008 Slidesmkherlakian
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Wim Godden
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APCBen Ramsey
 
Zend Server Data Caching
Zend Server Data CachingZend Server Data Caching
Zend Server Data CachingEl Taller Web
 
phptek13 - Caching and tuning fun tutorial
phptek13 - Caching and tuning fun tutorialphptek13 - Caching and tuning fun tutorial
phptek13 - Caching and tuning fun tutorialWim Godden
 
Caching and tuning fun for high scalability @ phpBenelux 2011
Caching and tuning fun for high scalability @ phpBenelux 2011Caching and tuning fun for high scalability @ phpBenelux 2011
Caching and tuning fun for high scalability @ phpBenelux 2011Wim Godden
 
php & performance
 php & performance php & performance
php & performancesimon8410
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
Bottom to Top Stack Optimization with LAMP
Bottom to Top Stack Optimization with LAMPBottom to Top Stack Optimization with LAMP
Bottom to Top Stack Optimization with LAMPkatzgrau
 
Bottom to Top Stack Optimization - CICON2011
Bottom to Top Stack Optimization - CICON2011Bottom to Top Stack Optimization - CICON2011
Bottom to Top Stack Optimization - CICON2011CodeIgniter Conference
 
Give Your Site a Boost with Memcache
Give Your Site a Boost with MemcacheGive Your Site a Boost with Memcache
Give Your Site a Boost with MemcacheBen Ramsey
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance毅 吕
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Wim Godden
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
Zend_Cache: how to improve the performance of PHP applications
Zend_Cache: how to improve the performance of PHP applicationsZend_Cache: how to improve the performance of PHP applications
Zend_Cache: how to improve the performance of PHP applicationsEnrico Zimuel
 
Built-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIsBuilt-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIsUlf Wendel
 

Similar a Dutch php conference_apc_mem2010 (20)

Zend Con 2008 Slides
Zend Con 2008 SlidesZend Con 2008 Slides
Zend Con 2008 Slides
 
Pecl Picks
Pecl PicksPecl Picks
Pecl Picks
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011Caching and tuning fun for high scalability @ FrOSCon 2011
Caching and tuning fun for high scalability @ FrOSCon 2011
 
Caching with Memcached and APC
Caching with Memcached and APCCaching with Memcached and APC
Caching with Memcached and APC
 
Zend Server Data Caching
Zend Server Data CachingZend Server Data Caching
Zend Server Data Caching
 
phptek13 - Caching and tuning fun tutorial
phptek13 - Caching and tuning fun tutorialphptek13 - Caching and tuning fun tutorial
phptek13 - Caching and tuning fun tutorial
 
Caching and tuning fun for high scalability @ phpBenelux 2011
Caching and tuning fun for high scalability @ phpBenelux 2011Caching and tuning fun for high scalability @ phpBenelux 2011
Caching and tuning fun for high scalability @ phpBenelux 2011
 
php & performance
 php & performance php & performance
php & performance
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
Bottom to Top Stack Optimization with LAMP
Bottom to Top Stack Optimization with LAMPBottom to Top Stack Optimization with LAMP
Bottom to Top Stack Optimization with LAMP
 
Bottom to Top Stack Optimization - CICON2011
Bottom to Top Stack Optimization - CICON2011Bottom to Top Stack Optimization - CICON2011
Bottom to Top Stack Optimization - CICON2011
 
Give Your Site a Boost with Memcache
Give Your Site a Boost with MemcacheGive Your Site a Boost with Memcache
Give Your Site a Boost with Memcache
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012
 
Memcached Study
Memcached StudyMemcached Study
Memcached Study
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
1
11
1
 
Zend_Cache: how to improve the performance of PHP applications
Zend_Cache: how to improve the performance of PHP applicationsZend_Cache: how to improve the performance of PHP applications
Zend_Cache: how to improve the performance of PHP applications
 
Built-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIsBuilt-in query caching for all PHP MySQL extensions/APIs
Built-in query caching for all PHP MySQL extensions/APIs
 

Más de isnull

站点报告模板
站点报告模板站点报告模板
站点报告模板isnull
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构isnull
 
软件工程&架构
软件工程&架构软件工程&架构
软件工程&架构isnull
 
183银行服务器下载说明
183银行服务器下载说明183银行服务器下载说明
183银行服务器下载说明isnull
 
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析isnull
 
Dutch php conference_2010_opm
Dutch php conference_2010_opmDutch php conference_2010_opm
Dutch php conference_2010_opmisnull
 
易趣
易趣易趣
易趣isnull
 

Más de isnull (8)

站点报告模板
站点报告模板站点报告模板
站点报告模板
 
张勇 搜搜前端架构
张勇 搜搜前端架构张勇 搜搜前端架构
张勇 搜搜前端架构
 
软件工程&架构
软件工程&架构软件工程&架构
软件工程&架构
 
Scrum
ScrumScrum
Scrum
 
183银行服务器下载说明
183银行服务器下载说明183银行服务器下载说明
183银行服务器下载说明
 
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析
 
Dutch php conference_2010_opm
Dutch php conference_2010_opmDutch php conference_2010_opm
Dutch php conference_2010_opm
 
易趣
易趣易趣
易趣
 

Último

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 

Último (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 

Dutch php conference_apc_mem2010