2012-02-23 12 views
0

私はパーセンテージを出力する長時間実行するperlスクリプトを持っています。どのようにしてPHPページで完了ステータスをリアルタイムで表示できますか?PHPからperlスクリプトを監視する方法

例:

のperl:

my $i = 0; 
for $i (1 .. 6) { 
    print "$i\n"; 
    sleep 1; 
} 
print "script end\n"; 
exit; 

PHP:

echo passthru('perl testprint.pl'); 

これは、出力ではなく、リアルタイムに表示するように動作します。

+1

どのように出力されますか?各行に新しい割合がありますか?古いパーセンテージのバックスペースは、それが決して解析されないという考えを持っていますか? – jordanm

+0

perlスクリプトは現在、各行に新しいパーセンテージを出力します。しかし、私は必要に応じて書き直すことができます。 – Isius

+0

はperlをphpに変換します。これまで誰かがPHPが良いことを知っています:-) –

答えて

1

出力をフラットファイルにパイプするようにperlスクリプトを変更します。このファイルを解析して必要な形式で出力するには、PHPスクリプトを使用します。

あなたはhtmlページからajaxを使ってphpスクリプトを呼び出すことができます。あるいは、サーバーのCGIディレクトリにperlスクリプトを保存すると、余分なPHPファイルを必要とせずに直接呼び出すことができます。

最後に、すばらしいプログレスバーと利益を作成します。

+0

私は正しい方向に私を向けると思います。しかし、ここではproc_openを使う方が良いでしょうか? – Isius

+0

私はその機能に慣れていませんが、公にアクセス可能なサイトや共有ホスティングサーバー上で実行すると危険な可能性があります。おそらくその提案であなたの質問を更新し、より知識のある他の人がチャイムインすることができますか? –

0

そのためには、AJAXを利用する必要があります。

ステータスを確認して、AJAXにユーザーのステータスを更新させるPHPスクリプトがあります。

+0

しかし、スクリプトを再実行せずにステータスを監視するにはどうすればよいですか? – Isius

+0

その場合、ブラウザへのソケットを作成し、更なる更新のために接続を開いたままにするPerlスクリプトが必要です。 PHPには、サーバのリソースを浪費することなくこれを行う機能はありません。 –

関連する問題