Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Process/Pipes/AbstractPipes.php
Строк: 54
<?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 SymfonyComponentProcessPipes;

/**
 * @author Romain Neutron <imprec@gmail.com>
 *
 * @internal
 */
abstract class AbstractPipes implements PipesInterface
{
    
/** @var array */
    
public $pipes = array();

    
/** @var string */
    
protected $inputBuffer '';
    
/** @var resource|null */
    
protected $input;

    
/** @var bool */
    
private $blocked true;

    
/**
     * {@inheritdoc}
     */
    
public function close()
    {
        foreach (
$this->pipes as $pipe) {
            
fclose($pipe);
        }
        
$this->pipes = array();
    }

    
/**
     * Returns true if a system call has been interrupted.
     *
     * @return bool
     */
    
protected function hasSystemCallBeenInterrupted()
    {
        
$lastError error_get_last();

        
// stream_select returns false when the `select` system call is interrupted by an incoming signal
        
return isset($lastError['message']) && false !== stripos($lastError['message'], 'interrupted system call');
    }

    
/**
     * Unblocks streams
     */
    
protected function unblock()
    {
        if (!
$this->blocked) {
            return;
        }

        foreach (
$this->pipes as $pipe) {
            
stream_set_blocking($pipe0);
        }
        if (
null !== $this->input) {
            
stream_set_blocking($this->input0);
        }

        
$this->blocked false;
    }
}
Онлайн: 0
Реклама