Есть ли эквивалентный в C # Process.Start в PHP? - PullRequest
5 голосов
/ 05 июня 2010
  1. В .NET Класс Process содержит несколько полезных свойств / методов, которые позволяют разработчикам получать доступ к относительной информации процесса. Есть ли в PHP эквивалентный метод или класс?

  2. Есть ли в PHP какой-либо эквивалентный метод, такой как метод C # "Process.Start ()"?

Ответы [ 6 ]

4 голосов
/ 11 июня 2010

1. См. Функции выполнения программы

За исключением того, что в стандартных функциях PHP нет понятия методов / классов / свойств / пространств имен. PHP по сути является процедурным языком программирования с несколькими конструкциями ООП и поддержкой пространства имен, добавляемыми как новая функция с последнего основного выпуска (5.3). Это одна из причин, почему люди критикуют его как «игрушечный» язык. Вы можете получить доступ ко всем встроенным функциям PHP все время, никакие надоедливые пространства имен не мешают;), просто будьте осторожны с конфликтами имен.

2. @YSJaitawat Правильный ответ неверная ссылка.

Нажмите эту ссылку для документации по exec функции в руководстве по PHP .

Примечание. Кроме того, если вы переходите с C # на PHP и ищете информацию, руководство по PHP содержит удивительно полезную информацию, включая комментарии, отправленные пользователями в нижней части записи, где люди обычно публикуют варианты использования или расширения для стандартного использования. Это, пожалуй, самый простой язык для изучения из-за большого количества информации, которую можно найти в руководстве.

4 голосов
/ 05 июня 2010

Следующий фрагмент кода должен делать то же самое, что и «Process.Start ()»

$ executetable = 'исполняемый процесс';exec ($ исполняемый файл);

подробнее об управлении процессом и его выполнении можно найти по адресу http://php.net/manual/en/book.pcntl.php

1 голос
/ 14 июня 2010

Ответ Эвана Плайса охватывает некоторые из основ, однако большая часть системы POSIX полностью управляет процессами и связью - конечно, если вы не на платформе Unix / Linux, то все эти функции недоступны.Если да, то посмотрите руководство

Однако оно не пытается обратиться к функциональности, реализованной в классе процессов .Net, что тесно связано с идеей Microsoft о том, что программа являетсяGUI.Для работы с интерактивными окнами вам придется посмотреть на привязки GTK или MSWindows, доступные в виде болтов.

0 голосов
/ 17 июня 2010

В .NET Класс Process содержит несколько полезных свойств / методов, которые разрешить разработчикам доступ к процессу относительная информация. У тебя есть эквивалентный метод или класс в PHP.

Вы, вероятно, получили бы больше / лучше ответов, если бы указали, какие свойства / методы вас интересуют. Я не разработчик C #, и я также не уверен, что это то, что вам нужно, но , что говорит руководство PHP об обработке соединений , это:

Когда скрипт PHP работает нормально состояние NORMAL активно. Если удаленный клиент отключает ABORTED государственный флаг включен. Дистанционный Отключение клиента обычно вызывается пользователь нажимает свою кнопку СТОП. Если введенный PHP лимит времени (см. set_time_limit()) ударил, TIMEOUT государственный флаг включен.

Вы можете проверить состояние соединения с помощью ... connection_status():

switch (connection_status())
{
    case CONNECTION_NORMAL:
        // ...
    break;

    case CONNECTION_ABORTED:
        // ...
    break;

    case CONNECTION_TIMEOUT:
        // ...
    break;
}

Функции POSIX (доступны только в системах POSIX) предоставляют некоторую дополнительную информацию. Кроме того, некоторые разные функции , в частности sys_getloadavg() и функции сна могут быть полезны в зависимости от того, что вы ищете.

Имеет любой эквивалентный метод в PHP, такой как метод C # "Process.Start ()".

Существует несколько функций выполнения программы , в частности:

В Windows вы также можете использовать COM-класс , чтобы открыть командную строку:

$cmd = new COM('WScript.Shell');

Кроме того, если вы хотите быть в безопасности от атак с использованием кода, не забывайте, что любой пользовательский ввод должен быть экранирован с помощью escapeshellarg() или escapeshellcmd().

0 голосов
/ 15 июня 2010

Вы можете использовать COM-объект, если (как следует из вашего поста) вы работаете в Windows (обратите внимание, что он не будет работать вообще в Linux, но он дает вам многое, что вы не можете обойтись без него) ,

$com = new COM('WScript.Shell');
$com->run('Path/To/Shell/Program', 0, false);

Команда запуска подробно здесь .

0 голосов
/ 10 июня 2010

Если вы хотите получить доступ к stdin и stdout процесса, который вы создаете, вы можете использовать:

http://be.php.net/manual/en/function.proc-open.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...