SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
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,

Contenu connexe

Tendances

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
 

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Plus de 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
 

Plus de 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
 

Dernier

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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
 
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
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
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
 
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
 
🐬 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
 
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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Dernier (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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 ...
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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...
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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...
 
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
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

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