PHP Classes

File: vendor/symfony/symfony/src/Symfony/Component/Process/Tests/PipeStdinInStdoutStdErrStreamSelect.php

Recommend this page to a friend!
  Classes of Murat Cileli   Papernic   vendor/symfony/symfony/src/Symfony/Component/Process/Tests/PipeStdinInStdoutStdErrStreamSelect.php   Download  
File: vendor/symfony/symfony/src/Symfony/Component/Process/Tests/PipeStdinInStdoutStdErrStreamSelect.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: Papernic
Manage documents colaboratively
Author: By
Last change:
Date: 7 years ago
Size: 1,753 bytes
 

Contents

Class file image Download
<?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.
 */

define('ERR_SELECT_FAILED', 1);
define('ERR_TIMEOUT', 2);
define('ERR_READ_FAILED', 3);
define('ERR_WRITE_FAILED', 4);

$read = array(STDIN);
$write = array(STDOUT, STDERR);

stream_set_blocking(STDIN, 0);
stream_set_blocking(STDOUT, 0);
stream_set_blocking(STDERR, 0);

$out = $err = '';
while (
$read || $write) {
   
$r = $read;
   
$w = $write;
   
$e = null;
   
$n = stream_select($r, $w, $e, 5);

    if (
false === $n) {
        die(
ERR_SELECT_FAILED);
    } elseif (
$n < 1) {
        die(
ERR_TIMEOUT);
    }

    if (
in_array(STDOUT, $w) && strlen($out) > 0) {
       
$written = fwrite(STDOUT, (binary) $out, 32768);
        if (
false === $written) {
            die(
ERR_WRITE_FAILED);
        }
       
$out = (binary) substr($out, $written);
    }
    if (
null === $read && '' === $out) {
       
$write = array_diff($write, array(STDOUT));
    }

    if (
in_array(STDERR, $w) && strlen($err) > 0) {
       
$written = fwrite(STDERR, (binary) $err, 32768);
        if (
false === $written) {
            die(
ERR_WRITE_FAILED);
        }
       
$err = (binary) substr($err, $written);
    }
    if (
null === $read && '' === $err) {
       
$write = array_diff($write, array(STDERR));
    }

    if (
$r) {
       
$str = fread(STDIN, 32768);
        if (
false !== $str) {
           
$out .= $str;
           
$err .= $str;
        }
        if (
false === $str || feof(STDIN)) {
           
$read = null;
            if (!
feof(STDIN)) {
                die(
ERR_READ_FAILED);
            }
        }
    }
}