“运行”;exec();在"下,;windows+;阿帕奇&x2B;php5.4“;比命令行慢

“运行”;exec();在"下,;windows+;阿帕奇&x2B;php5.4“;比命令行慢,php,apache,exec,Php,Apache,Exec,出于某种原因,我需要在Windows中运行C++程序PHP类似以下代码: $start = microtime(); exec("test.exe"); $end = microtime(); 当我在命令行中以php test.php的形式运行这个php文件时,“test.exe”告诉我它的花费时间是11秒。但是我用apache在浏览器中运行了它,比如localhost/test.php,它最终输出了252秒 在apache中,当它派生一个新进程或其他东西时,是否有任何限制 顺便说一句,“t

出于某种原因,我需要在Windows中运行C++程序PHP类似以下代码:

$start = microtime();
exec("test.exe");
$end = microtime();
当我在命令行中以
php test.php
的形式运行这个php文件时,“test.exe”告诉我它的花费时间是11秒。但是我用apache在浏览器中运行了它,比如
localhost/test.php
,它最终输出了252秒

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


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

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

一,。直接使用“test.exe”

二,。使用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
iii.使用apache运行

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

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


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

那么,
test.exe本身需要多长时间?PHP脚本至少需要那么长的时间,再加上PHP解析脚本所需的时间(这应该无关紧要)。@josecarlos 11秒。完成后,它将输出其运行时间。顺便说一句,text.exe是我编写的用于分析数据的程序。test.exe文件存储在哪里?在当前工作目录中?听起来很合理!我在Linux上做了同样的测试,它们花费的时间几乎相同。此外,我尝试使用
WMICCPU
exec
模式输出一些系统信息。我发现在window
apache+php
模式下,cpu时钟速度比php命令模式低。
CDumpAnalyze::Analyze time cost[63.158000] 
0.53862700 1378104642 
0.75394800 1378104705