2016-04-26 6 views
1

私はプロセスを終了し、プロセスの新しいインスタンスを開始するためのbashスクリプトを実行するPHPスクリプトを持っています。残念なことにそれを実行しようとすると、実行には非常に時間がかかります。なぜ私はその理由を知ることができますか?これはDebian 7専用サーバ上のapache2サーバです。PHPスクリプトの実行が遅い理由を確認

PHPスクリプト:

<?php 
header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST'); 
$start = microtime(TRUE); 
if (isset($_GET['resetnow'])) { 
    $myreset = $_GET['resetnow']; 
    if ($myreset == "now") { 
     $cmd=getcwd()."/resetut.sh 2>&1"; 
     exec($cmd, $output, $return_var); 
     $outputstr=implode(",", $output); 
     $finish = microtime(TRUE); 
     $totaltime = $finish - $start;  
     $timetaken = " This script took ".$totaltime." seconds to run"; 
     print $cmd." ".$outputstr.$timetaken; 
    } else { 
     print "Didnt receive correct parameters"; 
    } 
} else { 
    print "Undefined"; 
} 
?> 

シェルスクリプト:

#!/bin/bash 
cd pathto/utorrent 
killall utserver 
./utstart start 
a=$(pgrep utserver) 
echo Utorrent restarted as new process $a 

は、残念ながら、出力は次のようになります。あまりにも長いです

/pathto/resetut.sh 2>&1 Starting utorrent server, 
Utorrent restarted as new process 25044 25381 
This script took 275.10148310661 seconds to run 

。コマンドラインからシェルスクリプトを実行すると、完了までに1秒以下かかります。

+1

ブラウザからの起動とコマンドラインからのphpスクリプトの実行時間がほぼ同じですか? – Samsquanch

+4

これは 'プロファイリング'と呼ばれ、そのためのツールがあります。 Googleの詳細 –

+0

@Samsquanchはい私do – Droidzone

答えて

0

Linux上で自由に使えるツールがいくつかあります。 "ps"または "top"コマンドを使用して実行中のすべてのプロセスを表示できます。これらは実行中のすべてのプロセスの一覧を表示します。私の推測では、他のプログラムがCPUを利用しているので、それらを殺すことができます。

そうでない場合は、「time」コマンドを使用していくつかの時間テストを行うことができます。 PHPとBashの両方がシェルスクリプトであるため、PHPとBashの両方を実行するたびに解釈する必要があるため、C++プログラムと比較して少し遅く実行されます。

関連する問題