php - exec() 在 PHP 中运行缓慢 - 相同的命令以交互方式运行得更快

标签 php performance exec

谁能告诉我为什么 exec() 函数在 PHP 的不同机器上如此缓慢且时间不可预测?

基本上我有一些可执行文件并想通过 PHP 执行它:

$command = '/usr/pathToComman/myCommand -someParameters';
exec($command);

问题是它执行的时间比来自 shell 的相同命令长得多(我的意思是 3-4 有时长 25 倍)。

除此之外,命令从我服务器上的 PHP 执行的时间更长,更强大(更多 RAM 和更多 GHz)。

所以有两个问题:

  • 为什么?
  • 我该怎么办?

附言我需要这个执行,因为我不能用 PHP 做同样的事情

P.S.2 回答@prodigitalson 的问题:解微分方程,但基本上无论做什么,速度都慢了很多。我记得用这种方式做过一些图像处理,速度也慢了很多。

最佳答案

之所以速度较慢,可能是因为您的 PHP 服务器必须转到 shell 才能运行您的命令。那么 PHP 服务器所做的就是创建一个新的 shell 并在新的 shell 上调用命令。在大多数系统中创建一个新的 shell 意味着创建一个新的线程。 因此,所有这些因素共同导致执行时间更长。

有时 cgi 脚本可以帮助解决这些问题,但我不确定它在这里是否有帮助(因为我真的不知道你想在 shell 上做什么)

关于php - exec() 在 PHP 中运行缓慢 - 相同的命令以交互方式运行得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426541/

相关文章:

php - 使用 PHP 的多人游戏。我的机会是什么?

java - SOLR 会占用服务器大量内存吗?

python - 在Python中计算数组幂集最快的方法是什么?

performance - 如何使用 BigDecimals 避免巨大的 if 条件?

java - 从java运行外部进程的跨平台方式?

javascript - 为什么我不能在此 exec 函数中返回 stdout 变量?

javascript - jquery ajax 形式的实体解码

php - 数组到DB插入PHP MYSQL

java - 在开始时管理 JVM OldGen 峰值

c++ - 一个 exec 函数中的多个终端命令