Есть ли эквивалент Процессу C#. Запустить в PHP?

  1. В.NET класс Процесса содержит несколько полезных свойств/методов, которые позволяют разработчикам получать доступ к информации о родственнике процесса. Есть ли какой-либо эквивалентный метод или класс в PHP?

  2. Есть ли любой эквивалентный метод в PHP как метод C# "Процесс. Запустить ()"?

5
задан Gumbo 16 June 2010 в 20:34
поделиться

6 ответов

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

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

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

Щелкните эту ссылку, чтобы просмотреть документацию по функциям exec в руководстве по PHP .

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

4
ответ дан 14 December 2019 в 01:02
поделиться

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

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

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

4
ответ дан 14 December 2019 в 01:02
поделиться

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

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

0
ответ дан 14 December 2019 в 01:02
поделиться

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

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

Когда сценарий PHP работает нормально состояние НОРМАЛЬНОЕ активно. Если удаленный клиент отключает 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
ответ дан 14 December 2019 в 01:02
поделиться

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

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

Команда run подробно описана здесь.

0
ответ дан 14 December 2019 в 01:02
поделиться

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

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

1
ответ дан 14 December 2019 в 01:02
поделиться