【问题标题】:Running a high performance C program through PHP exec通过 PHP exec 运行高性能 C 程序
【发布时间】:2014-05-27 14:55:49
【问题描述】:

我们正在为流量生成器(高性能)设计一个非常基本的 UI。当我们直接在 shell 上运行二进制文件时它工作正常,但是当我们通过 php 脚本执行 exec 时性能下降。速度非常慢。

我们已经搜索过了,可能是apache环境没有为exec创建线程。

有什么方法可以减少处理时间或通过其他一些服务器端脚本?

谢谢。

【问题讨论】:

  • 这个可执行文件有什么作用,你为什么要通过 Apache 调用它?
  • PHP 新手,如有任何歧义,我们深表歉意。
  • 嗨 Marc,它生成网络数据包并通过 SCTP(传输)层发送。我们需要一个基于 Web 的界面。还有其他方法吗?
  • 在这两种情况下您是否使用相同的物理服务器?
  • 嗨,m-m,用例 1:$./a.out 10000 [每秒发送 10000 个数据包] 用例 2:$ in abc.php exec("./fap 2312 >dev/null & ");

标签: php c performance web exec


【解决方案1】:

您可以使用 exec 在后台运行命令。只需在命令末尾附加> /dev/null &。它将在 shell 中执行该命令并立即返回,而无需等待命令完成。

exec($cmd . " > /dev/null &");

解决方案1

您可以在php.ini 中进行更改以提高性能。

例如将memory_limit 增加到相对于您的 RAM 的更高值

解决方案2

您正在以 webuser(nobody/apache/ww-data) 的身份执行该程序,这是一个较少预先授权的用户。这就是问题所在。您可以使用 sudo 以更高级的用户/root 用户身份执行该命令。试试sudo in php exec()

【讨论】:

  • 嗨,哈里。我们在后台运行它,但与在 shell 上执行它相比,性能仍然差很多。有什么想法吗?
猜你喜欢
  • 2012-07-01
  • 2012-12-26
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
相关资源
最近更新 更多