【发布时间】:2011-02-28 02:05:05
【问题描述】:
在 .NET 中 Process 类包含几个有用的属性/方法,允许开发人员访问进程相关信息。 PHP中有没有等价的方法或类?
PHP中有没有类似C#方法“Process.Start()”的等效方法?
【问题讨论】:
标签: c# php .net process methods
在 .NET 中 Process 类包含几个有用的属性/方法,允许开发人员访问进程相关信息。 PHP中有没有等价的方法或类?
PHP中有没有类似C#方法“Process.Start()”的等效方法?
【问题讨论】:
标签: c# php .net process methods
Evan Plaice 的回答涵盖了一些基础知识,但是 POSIX 系统的很大一部分都是关于管理进程和通信的 - 当然,您不在 Unix/Linux 平台上,那么所有这些功能都不可用。如果是,请查看manual
但是,它并没有尝试解决 .Net 进程类实现的功能 - 这与 Microsoft 认为程序是 GUI 的想法密切相关。要使用交互式窗口,您必须查看 GTK 或 MSWindows 绑定作为螺栓连接。
【讨论】:
1.见Program execution Functions
除了 PHP 标准函数中没有方法/类/属性/命名空间的概念。 PHP 本质上是一种过程编程语言,在上一个主要版本 (5.3) 中添加了少量 OOP 结构和命名空间支持作为 新 功能。这也是人们批评它为“玩具”语言的原因之一。您可以随时访问所有 PHP 内置函数,没有讨厌的命名空间妨碍 ;),只是要小心名称冲突。
2.@YSJaitawat 正确答案错误参考。
点击此链接查看exec function documentation in the PHP manual。
注意:另外,如果您正在从 C# 迁移到 PHP 并寻找信息,PHP manual 有一些令人惊讶的好信息,包括在人们通常发布用例的条目底部的用户提交的 cmets或标准用途的扩展。由于手册中有大量信息,这可能是最容易学习的语言。
【讨论】:
在 .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() 进行转义。
【讨论】:
如果(正如您的帖子所暗示的那样)您在 Windows 上运行,您可以使用 COM 对象(请注意,它在 Linux 上根本不起作用,但它确实为您提供了很多没有它就无法实现的东西) .
$com = new COM('WScript.Shell');
$com->run('Path/To/Shell/Program', 0, false);
运行命令是detailed here。
【讨论】:
如果你想访问你创建的进程的标准输入和标准输出,你可以使用:
【讨论】:
下面的代码 sn-p 应该和“Process.Start()”做同样的事情
$executable = '可执行进程'; 执行($可执行);
有关流程控制和执行的更多信息,请访问http://php.net/manual/en/book.pcntl.php
【讨论】: