SlideShare a Scribd company logo
1 of 40
Download to read offline
ElePHPants on speed	

RunningTYPO3 Flow on HipHopVM	

Inspiring Conference, March 28th 2014
Martin Helmich, Mittwald CM Service	

m.helmich@mittwald.de
Photo: George Lamson, CC BY-NC-SA	

http://www.flickr.com/photos/lamsongf/6415913075/
YOUR SPEAKER
Martin Helmich
Software architect at Mittwald
TYPO3 addicted since 2004	

Caffeine addicted since 2007
Sebastian Bergmann, CC BY-SA	

http://www.flickr.com/photos/sebastian_bergmann/2337231691/
Lexing
Parsing
Compilation
Execution
PHP execution,	

traditional
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Lexing
Parsing
Compilat
Executio
T_OPEN_TAG
T_VARIABLE
T_LNUMBER
T_DOUBLE_	

ARROW
T_CONSTANT_ENCAPSED_STRING
T_IF
T_ELSE
T_ECHO
T_STRING
Lexing
Parsing
Compilat
Executio
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Lexing
Parsing
Compilat
Executio
Variable	

assignment
Array	

constructor
Array	

accessor
Constant
Conditional	

statement
Boolean	

expression
Function	

call
Print	

statement
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Lexing
Parsing
Compilat
Executio
compiled vars: !0 = $locations, !1 = $currentLocationId, !2 = $currentLocationName,	
!3 = $greetingTemplate	
line # * op fetch ext return operands	
----------------------------------------------------------------	
4 0 > EXT_STMT 	
1 INIT_ARRAY ~0 'Kolbermoor', 0	
5 2 ADD_ARRAY_ELEMENT ~0 'Espelkamp', 1	
7 3 ADD_ARRAY_ELEMENT ~0 'Las+Vegas', 2	
4 ASSIGN !0, ~0	
9 5 EXT_STMT 	
6 ASSIGN !1, 0	
10 7 EXT_STMT 	
8 FETCH_DIM_R $3 !0, !1	
9 ASSIGN !2, $3	
12 10 EXT_STMT 	
11 IS_IDENTICAL ~5 !1, 2	
12 > JMPZ ~5, ->16	
13 13 > EXT_STMT 	
14 ASSIGN !3, '%25s%2C+baby%21'	
14 15 > JMP ->18	
15 16 > EXT_STMT 	
17 ASSIGN !3, 'Hello+%25s%21'	
18 18 > EXT_STMT 	
19 EXT_FCALL_BEGIN 	
20 SEND_VAR !3	
21 SEND_VAR !2	
22 DO_FCALL 2 $8 'sprintf'	
23 EXT_FCALL_END 	
24 CONCAT ~9 $8, '%0A'	
25 ECHO ~9	
19 26 > RETURN 1	
!
Lexing
Parsing
Compilat
Executio
Lexing
Parsing
Compilation
Execution
PHP execution,	

traditional
Lexing
Parsing
Compilation
Execution
Opcode	

Cache
PHP	

opcodes
PHP execution,	

opcode cache
opcodes executed	

by PHP interpreter
Lexing
Parsing
Compilation
Execution
HipHop	

bytecode
JIT	

compiler
HipHop	

intermediate	

representation
Code	

repository
x86-64/arm	

machine code
PHP execution,	

HipHopVM
executed as	

native machine code
AST
https://www.facebook.com/notes/facebook-engineering/the-hiphop-virtual-machine/10150415177928920	

http://www.hhvm.com/blog/2027/faster-and-cheaper-the-evolution-of-the-hhvm-jit
$whatAmI = "Dynamic typization is great!";	
!
if ($whatAmI > 0) {	
$whatAmI = [	
"But in many PHP programs,",	
"this is not excessively used."	
];	
} else {	
$whatAmI = FALSE;	
}
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Array of	

strings
Integer
String
How to install
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -	
echo deb http://dl.hhvm.com/debian wheezy main | tee /etc/apt/sources.list.d/hhvm.list	
sudo apt-get update	
sudo apt-get install hhvm
https://github.com/facebook/hhvm/wiki/Prebuilt-Packages-on-Debian-7
RunningTYPO3 Flow	

on HHVM
One does not simply	

runTYPO3 Flow on
HHVM.
Flore Allemandou, CC BY-NC-SA	

http://www.flickr.com/photos/flore_frmoz/5031037626/
TYPO3.Flow/Classes/.../Core/Bootstrap.php ---|+++++++
TYPO3.Flow/Classes/.../Error/ErrorHandler.php -|+
TYPO3.Flow/Classes/.../Http/Headers.php |+++++
TYPO3.Flow/Classes/.../Mvc/Routing/ObjectPathMappingRepository.php -----|++++
TYPO3.Flow/Classes/.../Object/Configuration/ConfigurationArgument.php --|++++++++
TYPO3.Flow/Classes/.../Object/Configuration/ConfigurationProperty.php --|++++++++
TYPO3.Flow/Classes/.../Package/Package.php -|+
TYPO3.Flow/Classes/.../Security/AccountRepository.php -----|++++
TYPO3.Flow/Classes/.../Security/Policy/Role.php -|+++++
TYPO3.Flow/Classes/.../Security/Policy/RoleRepository.php -----|+++++++
TYPO3.Flow/Classes/.../Utility/Unicode/TextIterator.php -|+++++
TYPO3.Party/Classes/TYPO3/Party/Domain/Repository/PartyRepository.php -|+++
doctrine/dbal/lib/.../Driver/PDOConnection.php |+++++++++++++++++++++++++++++++++++++++
doctrine/dbal/lib/.../Driver/PDOStatement.php -|+++++++++++++++++++++++++++++++++++++++
Web/index.php |++ 	
TYPO3.Media/Classes/.../Domain/Model/Image.php -|++++ 	
TYPO3.Media/Classes/.../Domain/Model/ImageVariant.php -|++++ 	
TYPO3.Setup/Classes/.../Core/BasicRequirements.php -| 	
TYPO3.Setup/Classes/.../Core/RequestHandler.php |+++ 	
TYPO3.TYPO3CR/Classes/.../Migration/Command/NodeCommandController.php -|+++++	
imagine/imagine/lib/.../Filter/Basic/Resize.php --|++ 	
imagine/imagine/lib/.../Filter/Basic/Thumbnail.php --|++
Doctrine issue #372 (https://github.com/doctrine/dbal/pull/373),	

backported to 2.3
Hacks around various HHVM glitches
TYPO3 Flow 2.1
Unit tests, PHP 5.5
Tests: 4186, Assertions: 10145, Failures: 1, Incomplete: 1, Skipped: 95
Unit tests, HHVM	

(with compatibility patches)
Tests: 4186, Assertions: 10057, Failures: 14, Errors: 21, Incomplete: 1, Skipped: 95
99,98 %
99,14 %
Configuration/Production.hdf
Server {	
SourceRoot = /var/www/my-flow-site/Web	
DefaultDocument = index.php	
Port = 9000	
ThreadCount = 100	
}



Eval {	
Jit = true	
}	
!
VirtualHost {	
my-flow-site {	
Pattern = .*	
ServerVariables {	
FLOW_REWRITEURLS = 1	
FLOW_CONTEXT = Production	
}
Server {	
SourceRoot = /var/www/my-flow-site/Web	
DefaultDocument = index.php	
Port = 9000	
ThreadCount = 100	
}



Eval {	
Jit = true	
}	
!
VirtualHost {	
my-flow-site {	
Pattern = .*	
ServerVariables {	
FLOW_REWRITEURLS = 1	
FLOW_CONTEXT = Production	
}	
RewriteRules {	
persistentresources {	
pattern = ^/?(_Resources/Persistent/.{40})/.+(..+)	
to = $1$2	
}	
!
index {	
pattern = ^(.*)	
to = index.php/$1	
qsa = true	
}	
}	
}	
}	
!
StaticFile {	
Extensions {	
css = text/css	
js = text/javascript	
png = image/png	
jpg = image/jpeg	
}	
}
TYPO3:	
Flow:	
core:	
phpBinaryPathAndFilename: /usr/bin/hhvm	
subRequestPhpIniPathAndFilename: false
Configuration/Settings.yaml	

(configured for speed)
Use HHVM on sub-requests, too	

for even more performance.
Nico Kaiser, CC BY	

http://www.flickr.com/photos/nicokaiser/6070496071/
TYPO3:	
Flow:	
core:	
phpBinaryPathAndFilename: /usr/bin/php	
subRequestPhpIniPathAndFilename: /etc/php5/cli/php.ini
Always specify a php.ini or “false”.	

Automatic detection will fail.
Configuration/Settings.yaml	

(configured conservatively)
Start it
> FLOW_CONTEXT=PRODUCTION hhvm -m server -c Configuration/Production.hdf
0
20
40
60
80
Concurrency
50 100 150 200 250 300 350 400 450 500
PHP (Apache+opcache) HHVM (standalone)
HHVM (FCGI+Apache) HHVM (FCGI+nginx)
Requests per second	

TYPO3 Neos 1.0.2, production mode, with HHVM patches
0
4
8
12
16
Concurrency
50 100 150 200 250 300 350 400 450 500
PHP (Apache+opcache) HHVM (standalone)
HHVM (FCGI+Apache) HHVM (FCGI+nginx)
Response times	

TYPO3 Neos 1.0.2, production mode, with HHVM patches
91 %
93,25 %
95,5 %
97,75 %
100 %
Concurrency
50 100 150 200 250 300 350 400 450 500
PHP (Apache+opcache) HHVM (standalone)
HHVM (FCGI+Apache) HHVM (FCGI+nginx)
Availability	

TYPO3 Neos 1.0.2, production mode, with HHVM patches
Don't forget!	

Always enable production mode!
> composer create-project 	
mittwald-typo3/neos-hhvm-distribution
> composer create-project 	
mittwald-typo3/flow-hhvm-distribution
Contribute:	

https://github.com/mittwald/flow-hhvm
> composer create-project 	
mittwald-typo3/neos-hhvm-distribution
Apply compatibility patches	

Adjust configuration	

Create appropriate HDF configuration file
What does it do?
HHVM
FastCGI
Static	

files
nginx
Use HHVM as FastCGI backend
Server {	
Type = fastcgi	
FileSocket = /var/run/hhvm.sock	
SourceRoot = /var/www/my-flow-site/Web	
DefaultDocument = index.php	
ThreadCount = 100	
}
configuration.hdf
Use HHVM as FastCGI backend
ProxyPassMatch ^/_Resources !	
ProxyPass / fcgi://127.0.0.1:9000/var/www/flow/Web/
Apache configuration
location /_Resources {	
try_files $uri;	
}	
!
location / {	
fastcgi_pass 127.0.0.1:9000;	
fastcgi_index index.php;	
fastcgi_param SCRIPT_FILENAME /var/www/flow/Web/$fastcgi_script_name;	
include fastcgi_params;	
}
Nginx configuration
Tobias Schlitt, CC-BY-NC-SA	

http://www.flickr.com/photos/tobiasschlitt/2644905363/
Duncan
 Hull,

More Related Content

What's hot

Kubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserverKubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserverStefan Schimanski
 
Two Years In Production With Kubernetes - An Experience Report
Two Years In Production With Kubernetes - An Experience ReportTwo Years In Production With Kubernetes - An Experience Report
Two Years In Production With Kubernetes - An Experience ReportKasper Nissen
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoopclairvoyantllc
 
Patterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservicesPatterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservicesRachel Reese
 
Kube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiKube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiVMware Tanzu
 
Cloud native - CI/CD
Cloud native - CI/CDCloud native - CI/CD
Cloud native - CI/CDElad Hirsch
 
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!Rencore
 
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and PythonDEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and PythonCisco DevNet
 
Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow IntroductionLiangjun Jiang
 
What's new in c# 8.0
What's new in c# 8.0What's new in c# 8.0
What's new in c# 8.0Moaid Hathot
 
Container orchestration on_aws
Container orchestration on_awsContainer orchestration on_aws
Container orchestration on_awsKasper Nissen
 
Apollo Client - Meetup Curitiba
Apollo Client - Meetup CuritibaApollo Client - Meetup Curitiba
Apollo Client - Meetup CuritibaJaime Biernaski
 
Build a RESTful API with the Serverless Framework
Build a RESTful API with the Serverless FrameworkBuild a RESTful API with the Serverless Framework
Build a RESTful API with the Serverless Frameworkmasahitojp
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoToshiaki Maki
 
Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013Mohan Arumugam
 
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineGoogle Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineRoman Kirillov
 
PostgREST Design Philosophy
PostgREST Design PhilosophyPostgREST Design Philosophy
PostgREST Design Philosophybegriffs
 
Serverless Architecture - A Gentle Overview
Serverless Architecture - A Gentle OverviewServerless Architecture - A Gentle Overview
Serverless Architecture - A Gentle OverviewCodeOps Technologies LLP
 

What's hot (20)

Kubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserverKubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserver
 
Two Years In Production With Kubernetes - An Experience Report
Two Years In Production With Kubernetes - An Experience ReportTwo Years In Production With Kubernetes - An Experience Report
Two Years In Production With Kubernetes - An Experience Report
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
 
Patterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservicesPatterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservices
 
Kube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiKube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul Czarkowski
 
Cloud native - CI/CD
Cloud native - CI/CDCloud native - CI/CD
Cloud native - CI/CD
 
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
 
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and PythonDEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
 
Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow Introduction
 
What's new in c# 8.0
What's new in c# 8.0What's new in c# 8.0
What's new in c# 8.0
 
OpenIO Summit'17 - Grid for Apps
OpenIO Summit'17 - Grid for AppsOpenIO Summit'17 - Grid for Apps
OpenIO Summit'17 - Grid for Apps
 
Container orchestration on_aws
Container orchestration on_awsContainer orchestration on_aws
Container orchestration on_aws
 
Apollo Client - Meetup Curitiba
Apollo Client - Meetup CuritibaApollo Client - Meetup Curitiba
Apollo Client - Meetup Curitiba
 
Build a RESTful API with the Serverless Framework
Build a RESTful API with the Serverless FrameworkBuild a RESTful API with the Serverless Framework
Build a RESTful API with the Serverless Framework
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
 
Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013
 
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineGoogle Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
 
PostgREST Design Philosophy
PostgREST Design PhilosophyPostgREST Design Philosophy
PostgREST Design Philosophy
 
Serverless Architecture - A Gentle Overview
Serverless Architecture - A Gentle OverviewServerless Architecture - A Gentle Overview
Serverless Architecture - A Gentle Overview
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
 

Similar to InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM

Diving into HHVM Extensions (Brno PHP Conference 2015)
Diving into HHVM Extensions (Brno PHP Conference 2015)Diving into HHVM Extensions (Brno PHP Conference 2015)
Diving into HHVM Extensions (Brno PHP Conference 2015)James Titcumb
 
Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)James Titcumb
 
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016Codemotion
 
Php through the eyes of a hoster confoo
Php through the eyes of a hoster confooPhp through the eyes of a hoster confoo
Php through the eyes of a hoster confooCombell NV
 
Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)James Titcumb
 
php & performance
 php & performance php & performance
php & performancesimon8410
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Jeff Jones
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009PHPBelgium
 
Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Combell NV
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance毅 吕
 
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)Muhamad Al Imran
 
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)Muhamad Al Imran
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2Merixstudio
 
Php mysql training-in-mumbai
Php mysql training-in-mumbaiPhp mysql training-in-mumbai
Php mysql training-in-mumbaivibrantuser
 

Similar to InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM (20)

Running PHP on Nginx
Running PHP on NginxRunning PHP on Nginx
Running PHP on Nginx
 
Diving into HHVM Extensions (Brno PHP Conference 2015)
Diving into HHVM Extensions (Brno PHP Conference 2015)Diving into HHVM Extensions (Brno PHP Conference 2015)
Diving into HHVM Extensions (Brno PHP Conference 2015)
 
Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)
 
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
 
The new features of PHP 7
The new features of PHP 7The new features of PHP 7
The new features of PHP 7
 
Php through the eyes of a hoster confoo
Php through the eyes of a hoster confooPhp through the eyes of a hoster confoo
Php through the eyes of a hoster confoo
 
Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)
 
php & performance
 php & performance php & performance
php & performance
 
Running PHP on nginx
Running PHP on nginxRunning PHP on nginx
Running PHP on nginx
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009
 
Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11
 
php basics
php basicsphp basics
php basics
 
PHP
PHPPHP
PHP
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance
 
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
 
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
 
Php i basic chapter 3
Php i basic chapter 3Php i basic chapter 3
Php i basic chapter 3
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2
 
Php mysql training-in-mumbai
Php mysql training-in-mumbaiPhp mysql training-in-mumbai
Php mysql training-in-mumbai
 

More from mhelmich

InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the FlowInspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flowmhelmich
 
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 FlowT3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flowmhelmich
 
Verteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
Verteilte Konfigurationsmanagement-Systeme mit Open Source-KomponentenVerteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
Verteilte Konfigurationsmanagement-Systeme mit Open Source-Komponentenmhelmich
 
T3CON13: Web application development using Behaviour Driven Development
T3CON13: Web application development using Behaviour Driven DevelopmentT3CON13: Web application development using Behaviour Driven Development
T3CON13: Web application development using Behaviour Driven Developmentmhelmich
 
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
Scalable Deployment Architectures with TYPO3 Surf, Git and JenkinsScalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkinsmhelmich
 
mm_forum 2.0
mm_forum 2.0mm_forum 2.0
mm_forum 2.0mhelmich
 

More from mhelmich (6)

InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the FlowInspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
 
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 FlowT3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
 
Verteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
Verteilte Konfigurationsmanagement-Systeme mit Open Source-KomponentenVerteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
Verteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
 
T3CON13: Web application development using Behaviour Driven Development
T3CON13: Web application development using Behaviour Driven DevelopmentT3CON13: Web application development using Behaviour Driven Development
T3CON13: Web application development using Behaviour Driven Development
 
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
Scalable Deployment Architectures with TYPO3 Surf, Git and JenkinsScalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
 
mm_forum 2.0
mm_forum 2.0mm_forum 2.0
mm_forum 2.0
 

Recently uploaded

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
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
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
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
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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 ...
 
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
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM