在PHP中是否有与C#的Process.Start等价的东西?

时间:2010-06-05 05:20:30

标签: c# php .net process methods

  1. 在.NET中 Process类包含几个有用的属性/方法,允许开发人员访问进程相关信息。 PHP中是否有任何等效的方法或类?

  2. PHP中有没有像C#方法“Process.Start()”那样的等效方法?

6 个答案:

答案 0 :(得分:4)

以下代码段应与“Process.Start()”

相同

$ executable ='可执行程序'; EXEC($可执行文件);

有关流程控制和执行的更多信息,请访问http://php.net/manual/en/book.pcntl.php

答案 1 :(得分:4)

1.请参阅Program execution Functions

除了PHP标准函数中没有方法/类/属性/命名空间的概念。 PHP本质上是一种过程编程语言,在上一个主要版本(5.3)中添加了很少的OOP构造和名称空间支持作为特性。这是人们批评它为“玩具”语言的原因之一。你可以一直访问所有的PHP内置函数,没有讨厌的命名空间;),请注意名称冲突。

2. @YSJaitawat正确答案不好参考。

点击此exec function documentation in the PHP manual的链接。

注意:此外,如果您正在从C#迁移到PHP并查找信息,PHP manual会有一些令人惊讶的好信息,包括用户提交的评论,这些评论位于人们通常发布后使用的条目底部 - 标准用途的例子或扩展。它可能是最容易学习的语言,因为手册中提供了丰富的信息。

答案 2 :(得分:1)

Evan Plaice的答案涵盖了一些基础知识,但是POSIX系统的很大一部分都是管理流程和沟通 - 当然,你不是在Unix / Linux平台上,所以这些功能都不可用。如果是,请检查manual

然而,它并没有试图解决.Net流程类实现的功能 - 这与微软认为程序是GUI的想法密切相关。要使用交互式窗口,您必须查看可用作螺栓的GTK或MSWindows绑定。

答案 3 :(得分:0)

如果要访问您创建的进程的stdin和stdout,可以使用:

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

答案 4 :(得分:0)

如果(正如你的帖子所暗示的那样)你在Windows上运行,你可以使用COM对象(注意它在Linux上根本不起作用,但它确实给你很多没有它你不能做的事情) 。

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

运行命令为detailed here

答案 5 :(得分:0)

  

在.NET中Process类包含几个有用的属性/方法   允许开发人员访问进程   相关信息。你有没有?   PHP中的等效方法或类。

如果您指定了您感兴趣的属性/方法,您可能会获得更多/更好的答案。我不是C#开发人员,我也不确定这是不是你想要的,但what the PHP Manual has to say about connection handling就是这样:

  

当PHP脚本正常运行时   NORMAL状态是活动的。如果   远程客户端断开ABORTED   州旗已开启。一个遥控器   客户端断开通常是由   用户按下STOP按钮。如果   PHP强加的时间限制(见   set_time_limit()}被点击,TIMEOUT   状态标志已打开。

您可以使用... connection_status()检查连接状态:

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

    case CONNECTION_ABORTED:
        // ...
    break;

    case CONNECTION_TIMEOUT:
        // ...
    break;
}

POSIX functions(仅在POSIX系统下可用)提供了一些其他信息。此外,根据您的需要,一些miscellaneous functions,特别是sys_getloadavg()和睡眠功能可能很有用。

  

在PHP中有任何等效方法,如C#方法“Process.Start()”。

有几个Program Execution functions,具体为:

在Windows下,您还可以使用COM class打开命令提示符:

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

此外,如果您希望免受代码注入攻击,请不要忘记任何用户提供的输入都应使用escapeshellarg()escapeshellcmd()进行转义。