在.NET中 Process类包含几个有用的属性/方法,允许开发人员访问进程相关信息。 PHP中是否有任何等效的方法或类?
PHP中有没有像C#方法“Process.Start()”那样的等效方法?
答案 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,可以使用:
答案 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()
进行转义。