【问题标题】:running "exec()" under "windows+apache+php5.4" slower than command line在“windows+apache+php5.4”下运行“exec()”比命令行慢
【发布时间】:2013-09-05 02:15:56
【问题描述】:

出于某种原因,我需要在 Windows + PHP 中运行 C++ 程序。 PHP 代码如:

$start = microtime();
exec("test.exe");
$end = microtime();

当我在命令行中以php test.php 运行这个 php 文件时,“test.exe”告诉它的成本时间是 11 秒。但是我在localhost/test.php这样的浏览器中使用apache运行它,它最终输出它花费了252s。

当它派生一个新进程或其他东西时,它是否有任何限制?


顺便说一句,“test.exe”是我为使用windbg 分析数据而编写的程序。

我用一些数据来测试它的性能。

我。直接使用“test.exe”

CDumpAnalyze::Analyze time cost[2.328000]

二。用php命令行调用。

$start = microtime();
system("cd F:\\DumpPlatform\\bin\\server && test.exe --cfg=dump_config.ini --gameversion=10000");
//exec("dir");
$end = microtime();

echo $start."\n";
echo $end."\n";

CDumpAnalyze::Analyze time cost[2.982000]
0.09448800 1378104101
0.11078900 1378104104

三。用 apache 运行

CDumpAnalyze::Analyze time cost[63.158000] 
0.53862700 1378104642 
0.75394800 1378104705

【问题讨论】:

  • 好吧,test.exe 自己需要多长时间? PHP 脚本将花费至少那么长时间,加上 PHP 解析脚本所需的时间(应该是微不足道的)。
  • @josecarlos 11 秒。完成后会输出其运行时间。顺便说一句,text.exe 是我编写的用于分析数据的程序。
  • test.exe 文件存储在哪里?在当前工作目录中?

标签: php apache exec


【解决方案1】:

显然您的test.exe 的执行时间成本没有差异。因此,差异与您的 Web 服务器以及它如何处理 PHP 脚本有关。 Apache 是一个Thread Safe Web 服务器,并且存在许多调度和其他进程表以管理其上的线程安全。此外,您的系统搜索从 Apache exe 文件到您的 test.exe 文件的路径所花费的时间可能在超过您的情况下的时间成本方面发挥重要作用。

您可以在其他网络服务器上测试您的程序并发布结果以进行精确比较。

【讨论】:

  • 这听起来很合理!我在 Linux 中进行了上述相同的测试,它们的成本几乎相同。
  • 另外,我尝试使用wmic cpuexec模式下输出一些系统信息。而且我发现在windowapache+php模式下的cpu时钟速度比php命令模式低。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 2018-05-15
相关资源
最近更新 更多