Blame view

sources/3rdparty/symfony/process/Symfony/Component/Process/PhpProcess.php 1.78 KB
6d9380f96   Cédric Dupont   Update sources OC...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  <?php
  
  /*
   * This file is part of the Symfony package.
   *
   * (c) Fabien Potencier <fabien@symfony.com>
   *
   * For the full copyright and license information, please view the LICENSE
   * file that was distributed with this source code.
   */
  
  namespace Symfony\Component\Process;
  
  use Symfony\Component\Process\Exception\RuntimeException;
  
  /**
   * PhpProcess runs a PHP script in an independent process.
   *
   * $p = new PhpProcess('<?php echo "foo"; ?>');
   * $p->run();
   * print $p->getOutput()."
  ";
   *
   * @author Fabien Potencier <fabien@symfony.com>
   *
   * @api
   */
  class PhpProcess extends Process
  {
      private $executableFinder;
  
      /**
       * Constructor.
       *
       * @param string  $script  The PHP script to run (as a string)
       * @param string  $cwd     The working directory
       * @param array   $env     The environment variables
       * @param integer $timeout The timeout in seconds
       * @param array   $options An array of options for proc_open
       *
       * @api
       */
      public function __construct($script, $cwd = null, array $env = array(), $timeout = 60, array $options = array())
      {
          parent::__construct(null, $cwd, $env, $script, $timeout, $options);
  
          $this->executableFinder = new PhpExecutableFinder();
      }
  
      /**
       * Sets the path to the PHP binary to use.
       *
       * @api
       */
      public function setPhpBinary($php)
      {
          $this->setCommandLine($php);
      }
  
      /**
       * {@inheritdoc}
       */
      public function start($callback = null)
      {
          if (null === $this->getCommandLine()) {
              if (false === $php = $this->executableFinder->find()) {
                  throw new RuntimeException('Unable to find the PHP executable.');
              }
              $this->setCommandLine($php);
          }
  
          parent::start($callback);
      }
  }