Новые книги

Крис Андерсон открыл золотую жилу. Суть открытия проста — современная дистрибуция заточена под торговлю популярными товарами и неэффективна.

Спрос на малоизвестные продукты так мал, что делает бессмысленным их производство и распространение. Но суммарная стоимость малоизвестных товаров в миллионы раз превышает стоимость хитов. А когда каждый потребитель может найти информацию о любом товаре — будущее любой индустрии связано с узкими нишевыми рынками. Нужны лишь инструменты, позволяющие учитывать желания каждого конкретного человека.

Эта книга (одна из наиболее значимых книг о бизнесе последнего десятилетия) предлагает такие инструменты. Вполне рабочие, проверенные на практике. Идея «длинного хвоста» применима к интернет-торговле, издательскому бизнесу, музыке, киноиндустрии, производству игрушек, кухонных принадлежностей, рекламе… к чему угодно.

Книга предназначена для предпринимателей и людей, желающих знать свое будущее.
Эта книга поможет вам быстро создать свой бизнес. Независимо от того, есть ли у вас собственное дело или вы только собираетесь начать его, она даст вам надежный ренет ускорения.

Задумайтесь о следующем: что, если бы вы могли осуществить выведение своего продукта на рынок подобно Apple или крупной голливудской студии? Что. если бы ваши потенциальные покупатели считали бы дни до того момента, когда они смогут купить ваш продукт? Что, если бы вы смогли обеспечить себе такое прочное позиционирование на вашем рынке, которое почти бы полностью устранило для вас конкуренцию? И вы могли бы делать все это, независимо от того, каким бы скромным ни был ваш бизнес или ваш бюджет?

Теперь вопрос заключается в следующем – вы в самом деле собираетесь начать работать медленно и вскоре угаснуть? Или же вы готовы осуществить старт; который изменит будущее вашего бизнеса и вашу жизнь?

Права на издание получены по соглашению с Morgan James Publishing. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

proc_open

Учебник РНР
НазадВперёд

proc_open

(только PHP 4 CVS)

proc_open - выполняет команду и открывает файловый указатель для ввода/вывода.

Описание

resource proc_open (string cmd, array descriptorspec, array pipes)

proc_open() похожа на popen(), но предоставляет больший контроль над выполнением программы. cmd это команда, выполняемая оболочкой. descriptorspec это индексированный массив, в котором ключи представляют номера дескрипторов, а значения представляют то, как PHP передаёт эти дескрипторы в дочерний процесс. pipes будет установлен в индексированный массив файловых указателей, соответствующий концу любых созданных каналов. return-значение является ресурсом представляющим процесс; вы должны освободить его с помощью proc_close() по окончании работы с ним.

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin это канал, из которого потомок будет читать
   1 => array("pipe", "w"),  // stdout это канал, в который потомок будет записывать
   2 => array("file", "/tmp/error-output.txt", "a"), // stderr это файл для записи
);
$process = proc_open("php", $descriptorspec, $pipes);
if (is_resource($process)) {
    // $pipes выглядит теперь примерно так:
    // 0 => записываемый дескриптор, соединённый с дочерним stdin
    // 1 => читаемый дескриптор, соединённый с дочерним stdout
    // Любой вывод ошибки будет присоединён к /tmp/error-output.txt

    fwrite($pipes[0], "<?php echo \"Hello World!\"; ?>");
    fclose($pipes[0]);

    while(!feof($pipes[1])) {
        echo fgets($pipes[1], 1024);
    }
    fclose($pipes[1]);
    // Важно, чтобы вы закрыли любые каналы до вызова
    // proc_close, чтобы исключить тупиковую блокировку
    $return_value = proc_close($process);

    echo "command returned $return_value\n";
}

Номера дескрипторов файлов в descriptorspec не ограничены 0, 1 и 2 - вы можете специфицировать любой правильный номер дескриптора файла, и он будет передан в дочерний процесс. Это даст возможность вашему скрипту взаимодействовать с другими скриптами, запущенными как "со-процессы". Это особенно пригодится для передачи pass-фраз программам вроде PGP, GPG и openssl более безопасным/секретным способом. Это используется также для чтения информации статуса, предоставляемой этими программами во вспомогательных дескрипторах файлов.

Примечание: Windows-совместимость: дескрипторы вне 2 (stderr) становятся доступными дочернему процессу как наследуемые дескрипторы, но, поскольку архитектура Windows не ассоциирует номер дескриптора файла с низкоуровневым дескриптором, дочерний процесс (пока ещё) не имеет средств доступа к этому дескриптору. Stdin, stdout и stderr work работают так, как ожидается.

Примечание: эта функция была введена в PHP 4.3.0.

Примечание: если вам нужен только однонаправленный канал процесса, используйте popen() вместо данной функции, так как она проще в использовании.

См. также exec(), system(), passthru(), popen(), escapeshellcmd() и операцию backtick.


Назад Оглавление Вперёд
proc_close Вверхshell_exec