SlideShare a Scribd company logo
© All rights reserved. Zend Technologies, Inc.
How to scale PHP applications
by Jan Burkl, Enrico Zimuel
Zend Technologies
http://www.zend.com
jan.burkl@zend.com, enrico@zend.com
30th
October 2010 – PHP Barcelona Conference
© All rights reserved. Zend Technologies, Inc.
About us
● Jan Burkl (jan.burkl@zend.com)
● Senior System Engineer at Zend
Technologies in Stuttgart (Germany)
since 2006
● Enrico Zimuel (enrico@zend.com)
● Senior Consultant & Architect at Zend
Technologies in Milan (Italy) since 2008
● Blog on web dev't: http://www.zimuel.it/blog
© All rights reserved. Zend Technologies, Inc.
Summary
● Scalability of a web application
● How to scale a PHP application
● PHP session management
● Sharing session data using:
▶ Network file system
▶ Database
▶ Memcached
▶ Redis
▶ Zend Server Cluster Manager
© All rights reserved. Zend Technologies, Inc.
Scalability of a web
application
© All rights reserved. Zend Technologies, Inc.
Scalability: general definition
“Scalability is a desirable property of a
system, a network, or a process, which
indicates its ability to either handle
growing amounts of work in a graceful
manner or to be enlarged”
Source: Wikipedia
© All rights reserved. Zend Technologies, Inc.
Scalability of a web application
A web application is scalable when is
able to manage a growing traffic with
additional resources (CPU, RAM)
without software changes
© All rights reserved. Zend Technologies, Inc.
Scale vertically vs. Scale horizontally
● Scale vertically (scale up)
▶ Add resources to a single node in a system
▶ Enhance the server (more CPU, more RAM, etc)
▶ High availability difficult to implement
● Scale horizontally (scale out)
▶ Add mores nodes to a system
▶ More servers, distributing the load
▶ High availability easy to implement
© All rights reserved. Zend Technologies, Inc.
Scale up vs. Scale out
Scale up Scale out
vs.
© All rights reserved. Zend Technologies, Inc.
The web scale out
● As Google taught, the best way to scale an high traffic
web application is horizontally
● No expensive servers to scale horizontally
● We need load balancers to split the traffic
between all the servers
A Google server
© All rights reserved. Zend Technologies, Inc.
A typical load balancer architecture
Load Balancer
Web Servers
Internet
Firewall
© All rights reserved. Zend Technologies, Inc.
How to scale a PHP application?
● The PHP application uses session/local data?
▶ Yes = we have to manage the session/local
data across multiple servers
● Using a persistent load balancer
● Share the session data
▶ No = we can scale very easy (stateless)
● Most of the PHP applications are not stateless,
they use session data
© All rights reserved. Zend Technologies, Inc.
Persistent load balancer
● A client request is assigned always to the same
server (means same session/local data)
● Pros:
▶ No software architecture changes
● Cons:
▶ No fault tolerant, if a server goes down the
session data are lost!
▶ The load balancer is the bottleneck
▶ The persistent load balancer are expensive
© All rights reserved. Zend Technologies, Inc.
Share the session data
● Manage the session data across the servers
● Pros:
▶ Fault tolerant, if a server goes down the load
balancer can user another server
▶ No bottleneck in the load balancer
▶ The stateless load balancer are cheaper
● Cons:
▶ Software architecture changes
© All rights reserved. Zend Technologies, Inc.
PHP session management
© All rights reserved. Zend Technologies, Inc.
Sessions in PHP
● Session support in PHP consists of a way to preserve certain
data across subsequent accesses
● To identify the subsequent accesses, from the same client,
PHP uses a cookie variable (PHPSESSID)
▶ Example: PHPSESSID= tclq3an1ri8dsfiuo43845loo1
● By default, session data are stored in the file system of the
server
● In PHP we manage the session data using the $_SESSION
global variable
© All rights reserved. Zend Technologies, Inc.
PHP session management
● Configure the PHP session management (php.ini directives):
▶ session.name
● name of the session cookie identifier
(PHPSESSID by default)
▶ session.save_handler
● defines the name of the handler which is used
for storing and retrieving data associated with
a session (files by default).
▶ session.save_path
● defines the argument which is passed to the
save handler (with files handler is the path to
store the session data)
© All rights reserved. Zend Technologies, Inc.
Example (PHP sessions using files)
● <?php
session_start();
$_SESSION['user']= 'enrico';
● In session folder (for instance, /tmp) the PHP creates a file
named sess_fvi9r84f14sjel8r28o6aqspr2 (where
fvi9r84f14sjel8r28o6aqspr2 is PHPSESSID) that contains:
user|s:6:"enrico";
© All rights reserved. Zend Technologies, Inc.
Share session data
● How to share PHP sessions between multiple
servers?
▶ Using a Network File System
▶ Using a Database
▶ Using Memcached
▶ Using Redis
▶ Using Zend Server Cluster Manager
▶ etc
© All rights reserved. Zend Technologies, Inc.
session_set_save_handler()
● You can write your PHP session handler using
the session_set_save_handler():
bool session_set_save_handler (
callback $open,
callback $close,
callback $read,
callback $write,
callback $destroy,
callback $gc)
● More info: http://php.net/manual/en/function.session-set-save-handler.php
© All rights reserved. Zend Technologies, Inc.
Session sharing
using NFS
© All rights reserved. Zend Technologies, Inc.
Session sharing using NFS
● Use the default PHP session handler
(session.session_handler= files)
● NFS to store the session data files
(session.save_path= NFS folder)
● Pros:
▶ No changes on the PHP side
● Cons:
▶ Highly inefficient
▶ Not designed for high read/write ratio
▶ Performance problems and data corruptions
© All rights reserved. Zend Technologies, Inc.
Session sharing
using Database
© All rights reserved. Zend Technologies, Inc.
Session sharing using DB
● Use the user PHP session handler
(session.session_handler= user)
● Use the session_set_save_handler() to implement
your db session handler
● Which db?
▶ MySQL
http://www.php.net/manual/en/function.session-set-save-handler.php#81761
▶ Ms SQL Server
● http://www.zimuel.it/blog/?p=402
▶ PostgreSQL, Oracle, etc
© All rights reserved. Zend Technologies, Inc.
Session sharing using DB (2)
● Pros:
▶ Solves the scalability limitation
▶ A lot of best practices available
▶ Wide installation base
▶ DB is (normally) available
● Cons:
▶ Sessions have almost 1:1 read/write ratio
▶ Connection overhead
▶ Single point of failure
▶ Performance bottleneck
© All rights reserved. Zend Technologies, Inc.
Session sharing
using Memcached
© All rights reserved. Zend Technologies, Inc.
Session sharing using Memcached
● Use the memcached PHP session handler
(session.session_handler= memcache)
● Pros:
▶ Native session handler
▶ Very fast (works in RAM)
▶ Can be clustered
● Cons:
▶ No persistent data (it's a caching system)
▶ Cyclic memory (data can be overwritten if the
memory is full)
© All rights reserved. Zend Technologies, Inc.
Session sharing
using Redis
© All rights reserved. Zend Technologies, Inc.
What is Redis?
● Redis is an open-source,
networked, in-memory, persistent,
journaled, key-value data store
(NoSQL).
● It's similar to memcached but the
dataset is not volatile
● Developed by: Salvatore Sanfilippo
● Sponsored by vmware
● http://code.google.com/p/redis/
© All rights reserved. Zend Technologies, Inc.
Session sharing using Redis
● Different PHP extensions for Redis:
▶ Predis, http://github.com/nrk/predis/
▶ Rediska, http://rediska.geometria-lab.net/
▶ redis.php, http://github.com/antirez/redisdotphp
▶ PHPRedis!, http://github.com/owlient/phpredis
● Custom session handler for Redis:
▶ http://github.com/ivanstojic/redis-session-php
© All rights reserved. Zend Technologies, Inc.
Session sharing using Redis (2)
● Pros:
▶ Fast (works in RAM)
▶ Reliable (master-slave replication)
● Cons:
▶ PHP Redis extensions are 0.x version
▶ Custom PHP session handler
▶ Not so scalable* (data are stored in RAM)
▶ No High Availability* (master-slave limitation)
* but Redis developers are working on a Cluster version!
© All rights reserved. Zend Technologies, Inc.
Session sharing
using Zend Server
Cluster Manager
© All rights reserved. Zend Technologies, Inc.
What is Zend Server and Cluster Manager?
● Zend Server is a complete, enterprise-ready
Web Application Server for running and
managing PHP applications that require a
high level of reliability, performance and
security on Linux, Windows or IBM i.
● Zend Server Cluster Manager (ZSCM)
extends the benefits of Zend Server across
large-scale PHP deployments.
● With ZSCM you can build a real PHP cluster
stack.
© All rights reserved. Zend Technologies, Inc.
Session sharing with ZSCM
● Session Clustering Extension
● Session Clustering Daemon (SCD)
● Storage backends: Disk / Memory
● Peer-to-peer protocol to communicate
between nodes
● Session management
with master-backup
architecture
© All rights reserved. Zend Technologies, Inc.
Zend Server Cluster Manager architecture
Load Balancer
MySQL
Firewall
© All rights reserved. Zend Technologies, Inc.
High availability: session cluster
© All rights reserved. Zend Technologies, Inc.
High availability: session cluster (2)
© All rights reserved. Zend Technologies, Inc.
Session cluster with ZSCM
● Pros:
▶ Very Fast
▶ Reliable (data are stored in master-backup
servers)
▶ High Availability
▶ Scalable (session data are stored in all the
nodes of the cluster)
▶ No changes to the PHP code
● Cons:
▶ You need Zend Server on each node of the
cluster
© All rights reserved. Zend Technologies, Inc.
Questions?
© All rights reserved. Zend Technologies, Inc.
Thank you for attending!
More info:
http://www.zend.com
http://phpconference.es

More Related Content

PDF
Greenplum Roadmap
PDF
PDF
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PPTX
BIND DNS Configuration Red Hat 5
PPTX
Network attached storage (nas)
PDF
Stop the Guessing: Performance Methodologies for Production Systems
PPTX
Active Directory component
PPT
Domain name server
Greenplum Roadmap
PostgreSQL on EXT4, XFS, BTRFS and ZFS
BIND DNS Configuration Red Hat 5
Network attached storage (nas)
Stop the Guessing: Performance Methodologies for Production Systems
Active Directory component
Domain name server

What's hot (6)

DOCX
General commands for navisphere cli
PDF
MongoDB Performance Tuning
PPTX
PowerShell-1
PDF
Microservicios sobre MEAN Stack
DOCX
Web design proposal sample
PDF
Tracxn - Database Technology Startup Landscape
General commands for navisphere cli
MongoDB Performance Tuning
PowerShell-1
Microservicios sobre MEAN Stack
Web design proposal sample
Tracxn - Database Technology Startup Landscape
Ad

Similar to How to scale PHP applications (20)

PDF
Costruire un sito e-commerce in alta affidabilità con Magento e Zend Server C...
PPTX
High performance PHP: Scaling and getting the most out of your infrastructure
PDF
Quick start on Zend Framework 2
PDF
How to Manage Cloud Infrastructures using Zend Framework
PDF
Scalable High-Availability Session Storage with ZSCM
PDF
Turbocharging php applications with zend server (workshop)
PPTX
Turbocharging php applications with zend server
ODP
Zero Downtime JEE Architectures
PPT
Microsoft TechDays 2011 - PHP on Windows
ODP
Intro to XPages for Administrators (DanNotes, November 28, 2012)
ODP
Final presentasi gnome asia
PDF
Zend Server: A Guided Tour
PPTX
Building and managing applications fast for IBM i
PDF
(phpconftw2012) PHP as a Middleware in Embedded Systems
PDF
Best Practices in PHP Application Deployment
PPTX
NodeJs vs PHP
PDF
01 zingme practice for building scalable website with php
PDF
Zingme practice for building scalable website with PHP
PDF
zingmepracticeforbuildingscalablewebsitewithphp
PDF
Zingme practice for building scalable website with PHP
Costruire un sito e-commerce in alta affidabilità con Magento e Zend Server C...
High performance PHP: Scaling and getting the most out of your infrastructure
Quick start on Zend Framework 2
How to Manage Cloud Infrastructures using Zend Framework
Scalable High-Availability Session Storage with ZSCM
Turbocharging php applications with zend server (workshop)
Turbocharging php applications with zend server
Zero Downtime JEE Architectures
Microsoft TechDays 2011 - PHP on Windows
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Final presentasi gnome asia
Zend Server: A Guided Tour
Building and managing applications fast for IBM i
(phpconftw2012) PHP as a Middleware in Embedded Systems
Best Practices in PHP Application Deployment
NodeJs vs PHP
01 zingme practice for building scalable website with php
Zingme practice for building scalable website with PHP
zingmepracticeforbuildingscalablewebsitewithphp
Zingme practice for building scalable website with PHP
Ad

More from Enrico Zimuel (20)

PDF
Password (in)security
PDF
Integrare Zend Framework in Wordpress
PDF
Cryptography with Zend Framework
PDF
Introduzione alla Posta Elettronica Certificata (PEC): le regole tecniche
PDF
A quick start on Zend Framework 2
PDF
Zend Framework 2 quick start
PDF
PHP goes mobile
PDF
Zend Framework 2
PDF
Cryptography in PHP: use cases
PDF
Manage cloud infrastructures in PHP using Zend Framework 2 (and 1)
PDF
Manage cloud infrastructures using Zend Framework 2 (and ZF1)
PDF
Framework software e Zend Framework
PDF
Strong cryptography in PHP
PDF
Velocizzare Joomla! con Zend Server Community Edition
PDF
Zend_Cache: how to improve the performance of PHP applications
PDF
XCheck a benchmark checker for XML query processors
PDF
Introduzione alle tabelle hash
PDF
Crittografia quantistica: fantascienza o realtà?
PDF
Introduzione alla crittografia
PDF
Crittografia è sinonimo di sicurezza?
Password (in)security
Integrare Zend Framework in Wordpress
Cryptography with Zend Framework
Introduzione alla Posta Elettronica Certificata (PEC): le regole tecniche
A quick start on Zend Framework 2
Zend Framework 2 quick start
PHP goes mobile
Zend Framework 2
Cryptography in PHP: use cases
Manage cloud infrastructures in PHP using Zend Framework 2 (and 1)
Manage cloud infrastructures using Zend Framework 2 (and ZF1)
Framework software e Zend Framework
Strong cryptography in PHP
Velocizzare Joomla! con Zend Server Community Edition
Zend_Cache: how to improve the performance of PHP applications
XCheck a benchmark checker for XML query processors
Introduzione alle tabelle hash
Crittografia quantistica: fantascienza o realtà?
Introduzione alla crittografia
Crittografia è sinonimo di sicurezza?

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Empathic Computing: Creating Shared Understanding
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Machine learning based COVID-19 study performance prediction
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Programs and apps: productivity, graphics, security and other tools
PPT
Teaching material agriculture food technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
cuic standard and advanced reporting.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
Empathic Computing: Creating Shared Understanding
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Per capita expenditure prediction using model stacking based on satellite ima...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
sap open course for s4hana steps from ECC to s4
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Understanding_Digital_Forensics_Presentation.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Encapsulation_ Review paper, used for researhc scholars
Machine learning based COVID-19 study performance prediction
Unlocking AI with Model Context Protocol (MCP)
Programs and apps: productivity, graphics, security and other tools
Teaching material agriculture food technology
NewMind AI Weekly Chronicles - August'25 Week I
cuic standard and advanced reporting.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf

How to scale PHP applications

  • 1. © All rights reserved. Zend Technologies, Inc. How to scale PHP applications by Jan Burkl, Enrico Zimuel Zend Technologies http://www.zend.com jan.burkl@zend.com, enrico@zend.com 30th October 2010 – PHP Barcelona Conference
  • 2. © All rights reserved. Zend Technologies, Inc. About us ● Jan Burkl (jan.burkl@zend.com) ● Senior System Engineer at Zend Technologies in Stuttgart (Germany) since 2006 ● Enrico Zimuel (enrico@zend.com) ● Senior Consultant & Architect at Zend Technologies in Milan (Italy) since 2008 ● Blog on web dev't: http://www.zimuel.it/blog
  • 3. © All rights reserved. Zend Technologies, Inc. Summary ● Scalability of a web application ● How to scale a PHP application ● PHP session management ● Sharing session data using: ▶ Network file system ▶ Database ▶ Memcached ▶ Redis ▶ Zend Server Cluster Manager
  • 4. © All rights reserved. Zend Technologies, Inc. Scalability of a web application
  • 5. © All rights reserved. Zend Technologies, Inc. Scalability: general definition “Scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner or to be enlarged” Source: Wikipedia
  • 6. © All rights reserved. Zend Technologies, Inc. Scalability of a web application A web application is scalable when is able to manage a growing traffic with additional resources (CPU, RAM) without software changes
  • 7. © All rights reserved. Zend Technologies, Inc. Scale vertically vs. Scale horizontally ● Scale vertically (scale up) ▶ Add resources to a single node in a system ▶ Enhance the server (more CPU, more RAM, etc) ▶ High availability difficult to implement ● Scale horizontally (scale out) ▶ Add mores nodes to a system ▶ More servers, distributing the load ▶ High availability easy to implement
  • 8. © All rights reserved. Zend Technologies, Inc. Scale up vs. Scale out Scale up Scale out vs.
  • 9. © All rights reserved. Zend Technologies, Inc. The web scale out ● As Google taught, the best way to scale an high traffic web application is horizontally ● No expensive servers to scale horizontally ● We need load balancers to split the traffic between all the servers A Google server
  • 10. © All rights reserved. Zend Technologies, Inc. A typical load balancer architecture Load Balancer Web Servers Internet Firewall
  • 11. © All rights reserved. Zend Technologies, Inc. How to scale a PHP application? ● The PHP application uses session/local data? ▶ Yes = we have to manage the session/local data across multiple servers ● Using a persistent load balancer ● Share the session data ▶ No = we can scale very easy (stateless) ● Most of the PHP applications are not stateless, they use session data
  • 12. © All rights reserved. Zend Technologies, Inc. Persistent load balancer ● A client request is assigned always to the same server (means same session/local data) ● Pros: ▶ No software architecture changes ● Cons: ▶ No fault tolerant, if a server goes down the session data are lost! ▶ The load balancer is the bottleneck ▶ The persistent load balancer are expensive
  • 13. © All rights reserved. Zend Technologies, Inc. Share the session data ● Manage the session data across the servers ● Pros: ▶ Fault tolerant, if a server goes down the load balancer can user another server ▶ No bottleneck in the load balancer ▶ The stateless load balancer are cheaper ● Cons: ▶ Software architecture changes
  • 14. © All rights reserved. Zend Technologies, Inc. PHP session management
  • 15. © All rights reserved. Zend Technologies, Inc. Sessions in PHP ● Session support in PHP consists of a way to preserve certain data across subsequent accesses ● To identify the subsequent accesses, from the same client, PHP uses a cookie variable (PHPSESSID) ▶ Example: PHPSESSID= tclq3an1ri8dsfiuo43845loo1 ● By default, session data are stored in the file system of the server ● In PHP we manage the session data using the $_SESSION global variable
  • 16. © All rights reserved. Zend Technologies, Inc. PHP session management ● Configure the PHP session management (php.ini directives): ▶ session.name ● name of the session cookie identifier (PHPSESSID by default) ▶ session.save_handler ● defines the name of the handler which is used for storing and retrieving data associated with a session (files by default). ▶ session.save_path ● defines the argument which is passed to the save handler (with files handler is the path to store the session data)
  • 17. © All rights reserved. Zend Technologies, Inc. Example (PHP sessions using files) ● <?php session_start(); $_SESSION['user']= 'enrico'; ● In session folder (for instance, /tmp) the PHP creates a file named sess_fvi9r84f14sjel8r28o6aqspr2 (where fvi9r84f14sjel8r28o6aqspr2 is PHPSESSID) that contains: user|s:6:"enrico";
  • 18. © All rights reserved. Zend Technologies, Inc. Share session data ● How to share PHP sessions between multiple servers? ▶ Using a Network File System ▶ Using a Database ▶ Using Memcached ▶ Using Redis ▶ Using Zend Server Cluster Manager ▶ etc
  • 19. © All rights reserved. Zend Technologies, Inc. session_set_save_handler() ● You can write your PHP session handler using the session_set_save_handler(): bool session_set_save_handler ( callback $open, callback $close, callback $read, callback $write, callback $destroy, callback $gc) ● More info: http://php.net/manual/en/function.session-set-save-handler.php
  • 20. © All rights reserved. Zend Technologies, Inc. Session sharing using NFS
  • 21. © All rights reserved. Zend Technologies, Inc. Session sharing using NFS ● Use the default PHP session handler (session.session_handler= files) ● NFS to store the session data files (session.save_path= NFS folder) ● Pros: ▶ No changes on the PHP side ● Cons: ▶ Highly inefficient ▶ Not designed for high read/write ratio ▶ Performance problems and data corruptions
  • 22. © All rights reserved. Zend Technologies, Inc. Session sharing using Database
  • 23. © All rights reserved. Zend Technologies, Inc. Session sharing using DB ● Use the user PHP session handler (session.session_handler= user) ● Use the session_set_save_handler() to implement your db session handler ● Which db? ▶ MySQL http://www.php.net/manual/en/function.session-set-save-handler.php#81761 ▶ Ms SQL Server ● http://www.zimuel.it/blog/?p=402 ▶ PostgreSQL, Oracle, etc
  • 24. © All rights reserved. Zend Technologies, Inc. Session sharing using DB (2) ● Pros: ▶ Solves the scalability limitation ▶ A lot of best practices available ▶ Wide installation base ▶ DB is (normally) available ● Cons: ▶ Sessions have almost 1:1 read/write ratio ▶ Connection overhead ▶ Single point of failure ▶ Performance bottleneck
  • 25. © All rights reserved. Zend Technologies, Inc. Session sharing using Memcached
  • 26. © All rights reserved. Zend Technologies, Inc. Session sharing using Memcached ● Use the memcached PHP session handler (session.session_handler= memcache) ● Pros: ▶ Native session handler ▶ Very fast (works in RAM) ▶ Can be clustered ● Cons: ▶ No persistent data (it's a caching system) ▶ Cyclic memory (data can be overwritten if the memory is full)
  • 27. © All rights reserved. Zend Technologies, Inc. Session sharing using Redis
  • 28. © All rights reserved. Zend Technologies, Inc. What is Redis? ● Redis is an open-source, networked, in-memory, persistent, journaled, key-value data store (NoSQL). ● It's similar to memcached but the dataset is not volatile ● Developed by: Salvatore Sanfilippo ● Sponsored by vmware ● http://code.google.com/p/redis/
  • 29. © All rights reserved. Zend Technologies, Inc. Session sharing using Redis ● Different PHP extensions for Redis: ▶ Predis, http://github.com/nrk/predis/ ▶ Rediska, http://rediska.geometria-lab.net/ ▶ redis.php, http://github.com/antirez/redisdotphp ▶ PHPRedis!, http://github.com/owlient/phpredis ● Custom session handler for Redis: ▶ http://github.com/ivanstojic/redis-session-php
  • 30. © All rights reserved. Zend Technologies, Inc. Session sharing using Redis (2) ● Pros: ▶ Fast (works in RAM) ▶ Reliable (master-slave replication) ● Cons: ▶ PHP Redis extensions are 0.x version ▶ Custom PHP session handler ▶ Not so scalable* (data are stored in RAM) ▶ No High Availability* (master-slave limitation) * but Redis developers are working on a Cluster version!
  • 31. © All rights reserved. Zend Technologies, Inc. Session sharing using Zend Server Cluster Manager
  • 32. © All rights reserved. Zend Technologies, Inc. What is Zend Server and Cluster Manager? ● Zend Server is a complete, enterprise-ready Web Application Server for running and managing PHP applications that require a high level of reliability, performance and security on Linux, Windows or IBM i. ● Zend Server Cluster Manager (ZSCM) extends the benefits of Zend Server across large-scale PHP deployments. ● With ZSCM you can build a real PHP cluster stack.
  • 33. © All rights reserved. Zend Technologies, Inc. Session sharing with ZSCM ● Session Clustering Extension ● Session Clustering Daemon (SCD) ● Storage backends: Disk / Memory ● Peer-to-peer protocol to communicate between nodes ● Session management with master-backup architecture
  • 34. © All rights reserved. Zend Technologies, Inc. Zend Server Cluster Manager architecture Load Balancer MySQL Firewall
  • 35. © All rights reserved. Zend Technologies, Inc. High availability: session cluster
  • 36. © All rights reserved. Zend Technologies, Inc. High availability: session cluster (2)
  • 37. © All rights reserved. Zend Technologies, Inc. Session cluster with ZSCM ● Pros: ▶ Very Fast ▶ Reliable (data are stored in master-backup servers) ▶ High Availability ▶ Scalable (session data are stored in all the nodes of the cluster) ▶ No changes to the PHP code ● Cons: ▶ You need Zend Server on each node of the cluster
  • 38. © All rights reserved. Zend Technologies, Inc. Questions?
  • 39. © All rights reserved. Zend Technologies, Inc. Thank you for attending! More info: http://www.zend.com http://phpconference.es