SlideShare a Scribd company logo
1 of 92
Download to read offline
CLI,	
  the	
  other	
  SAPI


                                  php


Thijs	
  Feryn
Evangelist
+32	
  (0)9	
  218	
  79	
  06
thijs@combellgroup.com
About	
  me




 I’m	
  an	
  Evangelist	
  at	
  Combell
About	
  me




 I’m	
  a	
  board	
  member	
  at	
  PHPBenelux
Follow	
  me	
  on	
  Twi+er:	
  @ThijsFeryn

Give	
  me	
  feedback:	
  h+p://joind.in/3596
SAPI?




        The	
  way	
  you	
  interact	
  with	
  PHP
Common	
  SAPIs
Common	
  SAPIs


           •   Apache/Apache	
  2
           •   FPM
           •   FastCGI
           •   ISAPI
           •   CLI
           •   GTK
The	
  CLI	
  SAPI




PHP	
  script	
  execuWon	
  via	
  the	
  command	
  line	
  interface
When	
  to	
  use
When	
  to	
  use


•   In	
  crons
•   For	
  batch	
  tasks
•   For	
  worker	
  processes
•   Daemons
•   Process	
  control
•   InteracWon	
  with	
  other	
  binaries
CLI 101
CLI 101
The PHP binary
Passing arguments
Reading from STDIN
I/O with pipes
CLI 101
Invoking a script with the
        PHP binary

php	
  file.php
CLI 101
    Passing arguments



php	
  file.php	
  arg1	
  arg2
CLI 101
    interpreting arguments

<?php
echo "Number of arguments {$argc}n";
foreach($argv as $key=>$argument){
    echo "Argument # {$key}: {$argument}n"; 
}
CLI 101
    interpreting arguments
                    Argument	
  
       Argument	
     count
         array
<?php
echo "Number of arguments {$argc}n";
foreach($argv as $key=>$argument){
    echo "Argument # {$key}: {$argument}n"; 
}
CLI 101      The	
  
                 PHP	
  file	
  is	
  an	
  
interpreting arguments
                 argument	
  too
$	
  php	
  args.php	
  arg1	
  arg2
Number	
  of	
  arguments	
  3
Argument	
  #	
  0:	
  args.php
Argument	
  #	
  1:	
  arg1
Argument	
  #	
  2:	
  arg2
$
CLI 101
   interpreting arguments
$_SERVER[‘argc’]      $argc

$_SERVER[‘argv’]      $argv

   !!! register_argc_argv !!!
CLI 101
            getopt


<?php
$arguments = getopt('ab:c::');
var_dump($arguments);
CLI 101
            getopt           OpWonal	
  
              Flag	
  
           (no	
  value)      value
<?php
$arguments = getopt('ab:c::');
var_dump($arguments);
                           Required	
  
                            value
CLI 101
php	
  getopt.php	
  -­‐a	
  -­‐b	
  2	
  -­‐c3
array(3)	
  {
	
  	
  ["a"]=>                                  No	
  
	
  	
  bool(false)
	
  	
  ["b"]=>                              spacing	
  for	
  
	
  	
  string(1)	
  "2"                      opWonal	
  
	
  	
  ["c"]=>                              arguments
	
  	
  string(1)	
  "3"
}
CLI 101
      getopt: longopts


<?php
$arguments = getopt('',array('a
rg1','arg2:','arg3::'));
var_dump($arguments);
CLI 101
php	
  getopt2.php	
  -­‐-­‐arg1	
  -­‐-­‐arg2	
  123	
  -­‐-­‐arg3=x
array(3)	
  {
	
  	
  ["arg1"]=>
	
  	
  bool(false)                                 Mind	
  
	
  	
  ["arg2"]=>                           the	
  “=”	
  sign
	
  	
  string(3)	
  "123"
	
  	
  ["arg3"]=>
	
  	
  string(1)	
  "x"
}
CLI 101
     REading From STDIN
<?php
$handle = fopen('php://stdin','r');
while(!feof($handle)){
    $line = trim(fgets($handle));
    if(strlen($line) > 0){
        echo strrev($line).PHP_EOL;
    }
}
fclose($handle);
CLI 101
$	
  cat	
  test.txt	
  |	
  php	
  stdin.php	
  
enO
owT
eerhT
$
CLI 101
$	
  cat	
  test.txt	
  |	
  php	
  stdin.php	
  
enO
owT
                 Output	
          Convert	
  
eerhT
$                 file           output	
  to	
  
                               input	
  with	
  
                                 pipes
Comparing	
  the	
  Apache	
  &	
  CLI	
  SAPI
Comparing	
  the	
  Apache	
  &	
  CLI	
  SAPI

                  Web	
  based	
  SAPI’s
•   HTTP	
  is	
  a	
  stateless	
  protocol
•   Request/response	
  based
•   Limited	
  interacWon
•   Sessions	
  &	
  cookies	
  as	
  workaround
•   ExecuWon	
  Wmeouts
•   Limited	
  request/response	
  size
Comparing	
  the	
  Apache	
  &	
  CLI	
  SAPI


                            CLI	
  SAPI
•   Controlable	
  state
•   Controlable	
  script	
  execuWon
•   ConWnuous	
  interacWon
•   No	
  need	
  for	
  sessions
•   No	
  execuWon	
  Wmeouts
The	
  PHP	
  binary




                       php
The	
  PHP	
  binary


Usage:	
  php	
  [options]	
  [-­‐f]	
  <file>	
  [-­‐-­‐]	
  [args...]
	
  	
  	
  	
  	
  	
  	
  php	
  [options]	
  -­‐r	
  <code>	
  [-­‐-­‐]	
  [args...]
	
  	
  	
  	
  	
  	
  	
  php	
  [options]	
  [-­‐B	
  <begin_code>]	
  -­‐R	
  <code>	
  
[-­‐E	
  <end_code>]	
  [-­‐-­‐]	
  [args...]
	
  	
  	
  	
  	
  	
  	
  php	
  [options]	
  [-­‐B	
  <begin_code>]	
  -­‐F	
  <file>	
  
[-­‐E	
  <end_code>]	
  [-­‐-­‐]	
  [args...]
	
  	
  	
  	
  	
  	
  	
  php	
  [options]	
  -­‐-­‐	
  [args...]
	
  	
  	
  	
  	
  	
  	
  php	
  [options]	
  -­‐a
InteracMve	
  mode	
  (-­‐a)

       $	
  php	
  -­‐a
       Interactive	
  shell

       php	
  >	
  echo	
  5+8;
       13
       php	
  >	
  function	
  addTwo($n)
       php	
  >	
  {
       php	
  {	
  return	
  $n	
  +	
  2;
       php	
  {	
  }
       php	
  >	
  var_dump(addtwo(2));
       int(4)
       php	
  >
InteracMve	
  mode	
  (-­‐a)


       $	
  php	
  -­‐a                                   Tab	
  
       Interactive	
  shell                            compleWon
       php	
  >	
  stri[TAB][TAB]
       strip_tags	
  	
  	
  	
  	
  stripcslashes	
  	
  
       stripslashes	
  	
  	
  stristr	
  	
  	
  	
  	
  	
  	
  	
  
       stripos	
  	
  	
  	
  	
  	
  	
  	
  
       php	
  >	
  stri
Run	
  code	
  (-­‐r)




      $	
  php	
  -­‐r	
  "echo	
  date('Y-­‐m-­‐d	
  H:i:s');"
      2011-­‐03-­‐02	
  22:04:45
      $
Config	
  directory	
  (-­‐c)




 $	
  php	
  -­‐c	
  /custom/dir/php.ini	
  script.php
Define	
  custom	
  INI	
  seSng	
  (-­‐d)



 $	
  php	
  -­‐d	
  max_execution_time=20	
  -­‐r	
  '$foo	
  =	
  
 ini_get("max_execution_time");	
  
 var_dump($foo);'
 string(2)	
  "20"
 $
Get	
  INI	
  informaMon	
  (-­‐i)
                                     Filtering	
  
                                      items
 $	
  php	
  -­‐i	
  |	
  grep	
  “log_”
 define_syslog_variables	
  =>	
  Off	
  =>	
  Off
 log_errors	
  =>	
  On	
  =>	
  On
 log_errors_max_len	
  =>	
  1024	
  =>	
  1024
 $
Syntax/lint	
  check	
  (-­‐l)
                                     Only	
  
                                 checks	
  parse	
  
                                    errors
 $	
  php	
  -­‐l	
  myFile.php
 No	
  syntax	
  errors	
  detected	
  in	
  myFile.php
 $
Module	
  list	
  (-­‐m)

 $	
  php	
  -­‐m
 [PHP	
  Modules]
 bcmath
 bz2
 calendar
 Core
 ctype
 curl
 date
 dba
 $
Syntax	
  highlighMng	
  (-­‐s)




<?php
echo	
  "Hello	
  world";


$	
  php	
  -­‐s	
  helloworld.php	
  >	
  helloworld.html
$
Syntax	
  highlighMng	
  (-­‐s)

<code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /
></span><span style="color:
#007700">echo&nbsp;</span><span
style="color:
#DD0000">"Hello&nbsp;world"</span><span
style="color: #007700">;</span>
</span>


<?php
echo "Hello world";
Version	
  info	
  (-­‐v)


 $	
  php	
  -­‐v
 PHP	
  5.3.3-­‐1ubuntu9.3	
  with	
  Suhosin-­‐Patch	
  
 (cli)	
  (built:	
  Jan	
  12	
  2011	
  16:07:38)	
  
 Copyright	
  (c)	
  1997-­‐2009	
  The	
  PHP	
  Group
 Zend	
  Engine	
  v2.3.0,	
  Copyright	
  (c)	
  1998-­‐2010	
  
 Zend	
  Technologies
 $
FuncMon	
  reflecMon	
  (-­‐-­‐rf)

$	
  php	
  -­‐-­‐rf	
  json_encode
Function	
  [	
  <internal:json>	
  function	
  
json_encode	
  ]	
  {

	
  	
  -­‐	
  Parameters	
  [2]	
  {
	
  	
  	
  	
  Parameter	
  #0	
  [	
  <required>	
  $value	
  ]
	
  	
  	
  	
  Parameter	
  #1	
  [	
  <optional>	
  $options	
  ]
	
  	
  }
}
$
Class	
  reflecMon	
  (-­‐-­‐rc)
 $	
  php	
  -­‐-­‐rc	
  stdclass
 Class	
  [	
  <internal:Core>	
  class	
  stdClass	
  ]	
  {
 	
  	
  -­‐	
  Constants	
  [0]	
  {
 	
  	
  }
 	
  	
  -­‐	
  Static	
  properties	
  [0]	
  {
 	
  	
  }
 	
  	
  -­‐	
  Static	
  methods	
  [0]	
  {
 	
  	
  }
 	
  	
  -­‐	
  Properties	
  [0]	
  {
 	
  	
  }
 	
  	
  -­‐	
  Methods	
  [0]	
  {
 	
  	
  }
 }
 $
Extension	
  reflecMon	
  (-­‐-­‐re)

$	
  php	
  -­‐-­‐re	
  json
Extension	
  [	
  <persistent>	
  extension	
  #20	
  json	
  version	
  1.2.1	
  ]	
  {
...
	
  	
  -­‐	
  Functions	
  {
	
  	
  	
  	
  Function	
  [	
  <internal:json>	
  function	
  json_encode	
  ]	
  {

	
  	
  	
  	
  	
  	
  -­‐	
  Parameters	
  [2]	
  {
	
  	
  	
  	
  	
  	
  	
  	
  Parameter	
  #0	
  [	
  <required>	
  $value	
  ]
	
  	
  	
  	
  	
  	
  	
  	
  Parameter	
  #1	
  [	
  <optional>	
  $options	
  ]
	
  	
  	
  	
  	
  	
  }
	
  	
  	
  	
  }
...
}
Extension	
  INI	
  informaMon	
  (-­‐-­‐ri)



 $	
  php	
  -­‐-­‐ri	
  pdo

 PDO

 PDO	
  support	
  =>	
  enabled
 PDO	
  drivers	
  =>	
  mysql,	
  sqlite,	
  sqlite2
 $
Back	
  on	
  track
Back	
  to	
  I/O
Input	
  &	
  output


             Web                   CLI
•   $_SERVER           •   $_SERVER
•   $_GET              •   $argc/$argv
•   $_POST             •   $_ENV
•   $_COOKIE           •   getopt()
•   $_SESSION          •   STDIN/STDOUT/
                           STDERR
•   $_ENV
Change	
  your	
  mindset
Change	
  your	
  mindset


        Don’t	
  use	
  sessions	
  &	
  cookies



             Just	
  use	
  local	
  variables
Change	
  your	
  mindset


       If	
  you	
  don’t	
  need	
  HTTP,	
  use	
  CLI

                                                    E.g.	
  
                                                  cronjobs
                  Avoid	
  overhead
Change	
  your	
  mindset


        Current	
  directory	
  !=	
  webroot

                                          CLI	
  
                                      scripts	
  are	
  
➡Use	
  dirname(__FILE__)            executable	
  
                                     everywhere
➡Use	
  chdir()
➡Use	
  getcwd()
STDIN


  <?php
  $handle = fopen('php://stdin','r');
  while(!feof($handle)){
      $line = trim(fgets($handle));
      if(strlen($line) > 0){
          echo strrev($line).PHP_EOL;
      }
  }
  fclose($handle);
STDIN


  <?php
  $handle = fopen('php://stdin','r');
  while(!feof($handle)){
      $line = trim(fgets($handle));
      if(strlen($line) > 0){
          echo strrev($line).PHP_EOL;
      }
  }
  fclose($handle);
STDIN


  <?php

  while(!feof(STDIN)){
      $line = trim(fgets(STDIN));
      if(strlen($line) > 0){
          echo strrev($line).PHP_EOL;
      }
  }
STDIN
                      Stream	
  
                   that	
  is	
  opened	
  
  <?php              by	
  default
  while(!feof(STDIN)){
      $line = trim(fgets(STDIN));
      if(strlen($line) > 0){
          echo strrev($line).PHP_EOL;
      }
  }
STDIN


            The	
                        Stream	
  
                                     that	
  is	
  opened	
  
           proof	
  !                  by	
  default
 $	
  php	
  -­‐r	
  "var_dump(STDIN);"
 resource(1)	
  of	
  type	
  (stream)
 $
Wordcount	
  example

<?php
$wordArray = array();
while(!feof(STDIN)){
    $line = trim(fgets(STDIN));
    if(strlen($line) > 0){
        foreach(preg_split('/[s]+/',$line) as $word){
            if(!array_key_exists($word,$wordArray)){
                $wordArray[$word] = 0;
            }
            $wordArray[$word]++;
        }
    }
}
ksort($wordArray);
foreach($wordArray as $word=>$count){
    echo "$word: $count".PHP_EOL;
}
Wordcount	
  example

$	
  cat	
  wordcount.txt	
  
UK	
  Thijs
Thijs
UK
Thijs	
  PHPNW11
Thijs
UK
$	
  cat	
  wordcount.txt	
  	
  |	
  php	
  wordcount.php	
  
PHPNW11:	
  1
Thijs:	
  4
UK:	
  3
$
STDOUT
                            STDOUT	
  
                              ==	
  
                             echo
<?php
$handle = fopen('php://stdout','w');
fwrite($handle,'Hello world');
fclose($handle);
STDOUT




<?php
fwrite(STDOUT,'Hello world');
STDERR




<?php
$handle = fopen('php://stderr','w');
fwrite($handle,'Serious error!');
fclose($handle);
STDERR




<?php
fwrite(STDERR,'Serious error!');
Mixing	
  STDOUT	
  &	
  STDERR


<?php
fwrite(STDOUT,'STDOUT output'.PHP_EOL);
fwrite(STDERR,'STDERR output'.PHP_EOL);

$	
  php	
  stdmix.php	
  
STDOUT	
  output
STDERR	
  output
$
Mixing	
  STDOUT	
  &	
  STDERR


<?php
                Looks	
  
fwrite(STDOUT,'STDOUT output'.PHP_EOL);
              the	
  same
fwrite(STDERR,'STDERR output'.PHP_EOL);

$	
  php	
  stdmix.php	
  
STDOUT	
  output
STDERR	
  output
$
Mixing	
  STDOUT	
  &	
  STDERR


$	
  php	
  stdmix.php	
  >	
  /dev/null	
  
STDERR	
  output
$


$	
  php	
  stdmix.php	
  &>	
  	
  /dev/null
$
Mixing	
  STDOUT	
  &	
  STDERR
                                                 STDOUT	
  
                                                is	
  caught
$	
  php	
  stdmix.php	
  >	
  /dev/null	
           STDOUT	
  
STDERR	
  output
$                                               &	
  STDERR	
  are	
  
                                                      caught
$	
  php	
  stdmix.php	
  &>	
  	
  /dev/null
$
AlternaMve	
  output



<?php
fclose(STDOUT);
$handle = fopen(realpath(dirname(__FILE__).'/
output.txt'),'a');
echo "Hello world!".PHP_EOL;
fclose($handle);
AlternaMve	
  output



<?php
fclose(STDOUT);
$handle = fopen(realpath(dirname(__FILE__).'/
output.txt'),'a');
echo "Hello world!".PHP_EOL;
fclose($handle);
                             echo	
  
                       output	
  is	
  wrioen	
  
                            to	
  file
Piping

$	
  php	
  -­‐r	
  'for($i=0;$i<10;$i++)	
  echo	
  $i.PHP_EOL;'
0
1
2
3
4
5
6
7
8
9
$	
  php	
  -­‐r	
  'for($i=0;$i<10;$i++)	
  echo	
  $i.PHP_EOL;'	
  |	
  wc	
  -­‐l
	
  	
  	
  	
  	
  	
  10
$
Readline


<?php
$name = readline("What's your name: ");
$location = readline("Where do you live: ");
echo PHP_EOL."Hello $name from $locationn";

$	
  php	
  readline.php	
  
What's	
  your	
  name:	
  Thijs
Where	
  do	
  you	
  live:	
  Belgium

Hello	
  Thijs	
  from	
  Belgium
$
Shebang	
  !
Shebang	
  !


#!/usr/bin/php
<?php
echo "Hello world".PHP_EOL;


$	
  chmod	
  +x	
  shebang.php
$	
  ./shebang.php
Hello	
  world
$
Encore
Process	
  Control	
  should	
  not	
  be	
  enabled	
  
  within	
  a	
  web	
  server	
  environment	
  and	
  
  unexpected	
  results	
  may	
  happen	
  if	
  any	
  
Process	
  Control	
  funcWons	
  are	
  used	
  within	
  
       a	
  web	
  server	
  environment.
Forking       PID	
  value	
  
             determines	
  
               context                        Copy	
  
<?php
                                            program	
  
$pid = pcntl_fork();
if ($pid == -1) {
                                            execuWon
  //Forking failed
} else if ($pid) {
  //Parent logic
} else {               PID	
  of	
  child	
  
  //Child logic
}                        process
Forking
<?php
$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
} else if ($pid) {
     echo "[parent] Starting".PHP_EOL;
     pcntl_wait($status);
     echo "[parent] Exiting".PHP_EOL;
} else {
        echo "[child] Starting".PHP_EOL;
    for($i=0;$i<3;$i++){
        echo "[child] Loop $i".PHP_EOL;
        sleep(1);
    }
    echo "[child] Exiting".PHP_EOL;
    exit;
}
Forking                     Perform	
  
                            forking
<?php
$pid = pcntl_fork();
if ($pid == -1) {
     die('could not fork');
                                Wait	
  for	
  child	
  
} else if ($pid) {              terminaWon
     echo "[parent] Starting".PHP_EOL;
     pcntl_wait($status);
     echo "[parent] Exiting".PHP_EOL;
} else {
        echo "[child] Starting".PHP_EOL;
    for($i=0;$i<3;$i++){
        echo "[child] Loop $i".PHP_EOL;
        sleep(1);
    }
    echo "[child] Exiting".PHP_EOL;
    exit;
}
Signals

<?php
declare(ticks = 1);
function sig_handler($signo)
{
     switch ($signo) {
         case SIGTERM:
             echo PHP_EOL."SIGTERM".PHP_EOL;
             exit();
             break;
         case SIGINT:
             echo PHP_EOL."SIGINT".PHP_EOL;
             exit();
             break;
     }
}
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");
sleep(100);
Signals

<?php
declare(ticks = 1);           Process	
  
                            terminaWon
function sig_handler($signo)
{
     switch ($signo) {
         case SIGTERM:
                                           Process	
  
             echo PHP_EOL."SIGTERM".PHP_EOL;
             exit();
             break;
         case SIGINT:                   interrupWon
             echo PHP_EOL."SIGINT".PHP_EOL;
             exit();
             break;

                                           Catch	
  signals
     }
}
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");
sleep(100);
POSIX	
  process	
  control	
  funcMons
<?php
echo "[prefork] PID:
".posix_getpid().", parent PID: ".posix_getppid().PH
P_EOL;
$pid = pcntl_fork();
if ($pid == -1) {
  die('could not fork');
} else if ($pid == 0) {

echo "[child] PID: ".posix_getpid().", parent PID: "
.posix_getppid().PHP_EOL;
  exit;
} else {
  echo "[parent] PID: ".posix_getpid().", parent PID
: ".posix_getppid().PHP_EOL;
  pcntl_wait($status);
Parent	
  PID	
                   Prefork	
  PID	
  
POSIX	
  process	
  c==	
   funcMons
    of	
  parent	
   ontrol	
              ==	
  
<?phpsession	
  PID                    parent	
  PID
echo "[prefork] PID:
".posix_getpid().", parent PID: ".posix_getppid().PH
P_EOL;
$pid = pcntl_fork();
if ($pid == -1) {                            child	
  PID
     die('could not fork');
   child	
  PID
} else if ($pid == 0) {
        echo "[child] PID: ".posix_getpid().", paren
t PID: ".posix_getppid().PHP_EOL;               parent	
  
        exit;
} else {                                         PID
        echo "[parent] PID: ".posix_getpid().", pare
nt PID: ".posix_getppid().PHP_EOL;
        pcntl_wait($status);
}
POSIX	
  process	
  control	
  funcMons

<?php
$pid=pcntl_fork();
if ($pid == -1) {
    die("could not fork");
} else if ($pid) {
    $exists = posix_kill($pid,0)?'still':'no longer';
    echo "[parent] Child process $pid $exists exists".PHP_EOL;
    echo "[parent] Killing child process $pid".PHP_EOL;
    posix_kill($pid,SIGTERM);
    echo "[parent] Child process $pid killed".PHP_EOL;
    pcntl_wait($status);
    $exists = posix_kill($pid,0)?'still':'no longer';
    echo "[parent] Child process $pid $exists exists".PHP_EOL;
} else {
    while(true){
        sleep(100);
    }
    exit;
}
POSIX	
  process	
  control	
  funcMons
                           “KILL	
  0”	
  checks	
  
<?php
$pid=pcntl_fork();            existence
if ($pid == -1) {
    die("could not fork");
} else if ($pid) {
                                       Send	
  SIGTERM	
  
    $exists = posix_kill($pid,0)?'still':'no longer';
    echo "[parent] Child process $pid $exists exists".PHP_EOL;
                                           signal
    echo "[parent] Killing child process $pid".PHP_EOL;
    posix_kill($pid,SIGTERM);
    echo "[parent] Child process $pid killed".PHP_EOL;
    pcntl_wait($status);
    $exists = posix_kill($pid,0)?'still':'no longer';
    echo "[parent] Child process $pid $exists exists".PHP_EOL;
} else {
    while(true){
                                             Child	
  process	
  
        sleep(100);
    }
                                                is	
  dead
    exit;
}
Talk	
  
                                                            dedicated	
  to	
  
                                                           process	
  control	
  
Check	
  this	
  
guy	
  out	
  !                                                in	
  PHP
                     Jeroen	
  Keppens:	
  @jkeppens
                http://www.slideshare.net/jkeppens/php-­‐in-­‐the-­‐dark
•January	
  27th	
  &	
  28th	
  2012
•Best	
  Western	
  Hotel	
  Ter	
  Elst	
  Antwerp	
  (Belgium)
•Call	
  For	
  Papers	
  unWl	
  October	
  15th
•Schedule	
  &	
  Wcket	
  announcements	
  beginning	
  
of	
  November
Q&A
Thanks	
  !

More Related Content

What's hot

SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Developmentjsmith92
 
Looping the Loop with SPL Iterators
Looping the Loop with SPL IteratorsLooping the Loop with SPL Iterators
Looping the Loop with SPL IteratorsMark Baker
 
Php my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netPhp my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netProgrammer Blog
 
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐいHisateru Tanaka
 
Nikita Popov "What’s new in PHP 8.0?"
Nikita Popov "What’s new in PHP 8.0?"Nikita Popov "What’s new in PHP 8.0?"
Nikita Popov "What’s new in PHP 8.0?"Fwdays
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysqlProgrammer Blog
 
Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Contextlichtkind
 
32 shell-programming
32 shell-programming32 shell-programming
32 shell-programmingkayalkarnan
 
A Functional Guide to Cat Herding with PHP Generators
A Functional Guide to Cat Herding with PHP GeneratorsA Functional Guide to Cat Herding with PHP Generators
A Functional Guide to Cat Herding with PHP GeneratorsMark Baker
 
PHP Enums - PHPCon Japan 2021
PHP Enums - PHPCon Japan 2021PHP Enums - PHPCon Japan 2021
PHP Enums - PHPCon Japan 2021Ayesh Karunaratne
 
OSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersOSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersLin Yo-An
 
Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Kang-min Liu
 
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)James Titcumb
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest UpdatesIftekhar Eather
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13julien pauli
 

What's hot (20)

SPL: The Missing Link in Development
SPL: The Missing Link in DevelopmentSPL: The Missing Link in Development
SPL: The Missing Link in Development
 
Gun make
Gun makeGun make
Gun make
 
Perl6 in-production
Perl6 in-productionPerl6 in-production
Perl6 in-production
 
Looping the Loop with SPL Iterators
Looping the Loop with SPL IteratorsLooping the Loop with SPL Iterators
Looping the Loop with SPL Iterators
 
Php my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netPhp my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.net
 
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
 
Nikita Popov "What’s new in PHP 8.0?"
Nikita Popov "What’s new in PHP 8.0?"Nikita Popov "What’s new in PHP 8.0?"
Nikita Popov "What’s new in PHP 8.0?"
 
Functions in PHP
Functions in PHPFunctions in PHP
Functions in PHP
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysql
 
Perl 6 in Context
Perl 6 in ContextPerl 6 in Context
Perl 6 in Context
 
32 shell-programming
32 shell-programming32 shell-programming
32 shell-programming
 
A Functional Guide to Cat Herding with PHP Generators
A Functional Guide to Cat Herding with PHP GeneratorsA Functional Guide to Cat Herding with PHP Generators
A Functional Guide to Cat Herding with PHP Generators
 
PHP Enums - PHPCon Japan 2021
PHP Enums - PHPCon Japan 2021PHP Enums - PHPCon Japan 2021
PHP Enums - PHPCon Japan 2021
 
OSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP hatersOSDC.TW - Gutscript for PHP haters
OSDC.TW - Gutscript for PHP haters
 
Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)Good Evils In Perl (Yapc Asia)
Good Evils In Perl (Yapc Asia)
 
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
Mirror, mirror on the wall: Building a new PHP reflection library (DPC 2016)
 
SPL, not a bridge too far
SPL, not a bridge too farSPL, not a bridge too far
SPL, not a bridge too far
 
Introducing PHP Latest Updates
Introducing PHP Latest UpdatesIntroducing PHP Latest Updates
Introducing PHP Latest Updates
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13
 
Perl 6 by example
Perl 6 by examplePerl 6 by example
Perl 6 by example
 

Viewers also liked

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
 
Landscape Echoes Slideshow
Landscape Echoes SlideshowLandscape Echoes Slideshow
Landscape Echoes SlideshowJan Blencowe
 
Lok8 Presentation
Lok8 PresentationLok8 Presentation
Lok8 PresentationMark Smith
 
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42Kazumune Katagiri
 
Lista unitária graduação dttic 1240
Lista unitária graduação dttic 1240Lista unitária graduação dttic 1240
Lista unitária graduação dttic 1240Pedro França
 
Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198Pedro França
 
La base per a l'aprenentatge s xxi
La base per a l'aprenentatge s xxiLa base per a l'aprenentatge s xxi
La base per a l'aprenentatge s xxiNuria Alart
 
Brand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League TablesBrand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League TablesType 2 Consulting
 
The internet has gone Cloud fot11
The internet has gone Cloud fot11The internet has gone Cloud fot11
The internet has gone Cloud fot11Combell NV
 
Max Glutathione Study
Max Glutathione StudyMax Glutathione Study
Max Glutathione StudyMark Royer
 
Upshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s MarketersUpshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s MarketersLiz Aviles
 
Blend Elearning Real World
Blend Elearning Real WorldBlend Elearning Real World
Blend Elearning Real WorldJames Hanlon
 
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
 
Keeping the cloud in check cvodmd
Keeping the cloud in check cvodmdKeeping the cloud in check cvodmd
Keeping the cloud in check cvodmdCombell NV
 

Viewers also liked (20)

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
 
Landscape Echoes Slideshow
Landscape Echoes SlideshowLandscape Echoes Slideshow
Landscape Echoes Slideshow
 
Lok8 Presentation
Lok8 PresentationLok8 Presentation
Lok8 Presentation
 
Introduction To Twitter
Introduction To TwitterIntroduction To Twitter
Introduction To Twitter
 
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
受託開発だけだといずれケツカッチンになってしまうのでいっちょサービスでもやってみようかと思ってTryしてみた上期の報告 #nds42
 
Cafè amb web
Cafè amb webCafè amb web
Cafè amb web
 
Lista unitária graduação dttic 1240
Lista unitária graduação dttic 1240Lista unitária graduação dttic 1240
Lista unitária graduação dttic 1240
 
L‘Harmony_Report
L‘Harmony_ReportL‘Harmony_Report
L‘Harmony_Report
 
Ibo And Other Nigeria Pics
Ibo And Other Nigeria PicsIbo And Other Nigeria Pics
Ibo And Other Nigeria Pics
 
Gospel in the home
Gospel in the homeGospel in the home
Gospel in the home
 
Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198
 
La base per a l'aprenentatge s xxi
La base per a l'aprenentatge s xxiLa base per a l'aprenentatge s xxi
La base per a l'aprenentatge s xxi
 
Brand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League TablesBrand Valuation - Review of the 2013 League Tables
Brand Valuation - Review of the 2013 League Tables
 
The internet has gone Cloud fot11
The internet has gone Cloud fot11The internet has gone Cloud fot11
The internet has gone Cloud fot11
 
Max Glutathione Study
Max Glutathione StudyMax Glutathione Study
Max Glutathione Study
 
Upshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s MarketersUpshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s Marketers
 
Creative Story
Creative StoryCreative Story
Creative Story
 
Blend Elearning Real World
Blend Elearning Real WorldBlend Elearning Real World
Blend Elearning Real World
 
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
 
Keeping the cloud in check cvodmd
Keeping the cloud in check cvodmdKeeping the cloud in check cvodmd
Keeping the cloud in check cvodmd
 

Similar to CLI, the other SAPI phpnw11

CLI, the other SAPI
CLI, the other SAPICLI, the other SAPI
CLI, the other SAPICombell NV
 
Clear php reference
Clear php referenceClear php reference
Clear php referenceDamien Seguy
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy CodeRowan Merewood
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applicationschartjes
 
Quality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStormQuality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStormMichelangelo van Dam
 
The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5Wim Godden
 
Zend Certification PHP 5 Sample Questions
Zend Certification PHP 5 Sample QuestionsZend Certification PHP 5 Sample Questions
Zend Certification PHP 5 Sample QuestionsJagat Kothari
 
From CakePHP to Laravel
From CakePHP to LaravelFrom CakePHP to Laravel
From CakePHP to LaravelJason McCreary
 
Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128PrinceGuru MS
 
PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)Nikita Popov
 
Tips
TipsTips
Tipsmclee
 
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5Wim Godden
 
An introduction to PHP 5.4
An introduction to PHP 5.4An introduction to PHP 5.4
An introduction to PHP 5.4Giovanni Derks
 
DPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark WorkshopDPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark WorkshopJeroen Keppens
 
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 VersionDebugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 VersionIan Barber
 
Do more, faster, by extending WP-CLI
Do more, faster, by extending WP-CLIDo more, faster, by extending WP-CLI
Do more, faster, by extending WP-CLIdrywallbmb
 
PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)Nikita Popov
 
Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )Joseph Scott
 

Similar to CLI, the other SAPI phpnw11 (20)

CLI, the other SAPI
CLI, the other SAPICLI, the other SAPI
CLI, the other SAPI
 
Clear php reference
Clear php referenceClear php reference
Clear php reference
 
Hacking with hhvm
Hacking with hhvmHacking with hhvm
Hacking with hhvm
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
Building Testable PHP Applications
Building Testable PHP ApplicationsBuilding Testable PHP Applications
Building Testable PHP Applications
 
Quality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStormQuality assurance for php projects with PHPStorm
Quality assurance for php projects with PHPStorm
 
The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5The why and how of moving to php 5.4/5.5
The why and how of moving to php 5.4/5.5
 
Zend Certification PHP 5 Sample Questions
Zend Certification PHP 5 Sample QuestionsZend Certification PHP 5 Sample Questions
Zend Certification PHP 5 Sample Questions
 
From CakePHP to Laravel
From CakePHP to LaravelFrom CakePHP to Laravel
From CakePHP to Laravel
 
Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
 
PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)PHP 7 – What changed internally? (PHP Barcelona 2015)
PHP 7 – What changed internally? (PHP Barcelona 2015)
 
Tips
TipsTips
Tips
 
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5
 
An introduction to PHP 5.4
An introduction to PHP 5.4An introduction to PHP 5.4
An introduction to PHP 5.4
 
DPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark WorkshopDPC 2012 : PHP in the Dark Workshop
DPC 2012 : PHP in the Dark Workshop
 
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 VersionDebugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
 
Do more, faster, by extending WP-CLI
Do more, faster, by extending WP-CLIDo more, faster, by extending WP-CLI
Do more, faster, by extending WP-CLI
 
Php Intermediate
Php IntermediatePhp Intermediate
Php Intermediate
 
PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)PHP 7 – What changed internally? (Forum PHP 2015)
PHP 7 – What changed internally? (Forum PHP 2015)
 
Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )
 

More from 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
 
Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012Combell 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
 
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
 
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
 
Keeping the Cloud in check KATHO
Keeping the Cloud in check KATHOKeeping the Cloud in check KATHO
Keeping the Cloud in check KATHOCombell NV
 
Hosting tot Cloud Syntra West
Hosting tot Cloud Syntra WestHosting tot Cloud Syntra West
Hosting tot Cloud Syntra WestCombell NV
 

More from 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
 
Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012Hybrid cloud wiskyweb2012
Hybrid cloud wiskyweb2012
 
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
 
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
 
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
 
Keeping the Cloud in check KATHO
Keeping the Cloud in check KATHOKeeping the Cloud in check KATHO
Keeping the Cloud in check KATHO
 
Hosting tot Cloud Syntra West
Hosting tot Cloud Syntra WestHosting tot Cloud Syntra West
Hosting tot Cloud Syntra West
 

Recently uploaded

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 

CLI, the other SAPI phpnw11