Вход Регистрация
Файл: gapps/vendor/symfony/process/Tests/PipeStdinInStdoutStdErrStreamSelect.php
Строк: 38
<?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(STDOUTSTDERR);

stream_set_blocking(STDIN0);
stream_set_blocking(STDOUT0);
stream_set_blocking(STDERR0);

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

    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) $out32768);
        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) $err32768);
        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(STDIN32768);
        if (
false !== $str) {
            
$out .= $str;
            
$err .= $str;
        }
        if (
false === $str || feof(STDIN)) {
            
$read null;
            if (!
feof(STDIN)) {
                die(
ERR_READ_FAILED);
            }
        }
    }
}
Онлайн: 2
Реклама