0
私はphp経由でシステムのcurlコマンドを使用してファイルをダウンロードしています。それはうまくいきましたが、ダウンロードしていくうちにいくつかの進歩を見せようとしています。呼ばれるダウンロード中にPHP/Curlが進行する
curlコマンドとPHPは次のとおりです。
$a = popen("cd user; curl -O -# remote.server.com/filename.tar.gz 2>&1", 'r');
ob_flush();flush();
while($b = fgets($a, 64)) {
ob_flush();flush();
if (preg_match('~\b(error|fail|unknown)\b~i',$b)) {
echo "error^$b";
exit;
}
echo str_replace('#','',$b);
ob_flush();flush();
}
pclose($a);
これは、Ajaxを使用して呼び出され、出力はdivの中に表示されます。
var last_response_len = false;
$.ajax(url, {
xhrFields: {
onprogress: function(e)
{
var this_response, response = e.currentTarget.response;
if(last_response_len === false)
{
this_response = response;
last_response_len = response.length;
}
else
{
this_response = response.substring(last_response_len);
last_response_len = response.length;
}
$(upg).show();
console.log(this_response)
var count = this_response.match(/%/g);
if (count !== null && count.length != 2) $(msg).html(this_response);
}
}
})
これは動作しますが、msg div
にshowin結果は一致しない。私は得ることができます :
1%
5%
12.1%
12.5% 13.2%
14.2%
5.3%
16.7%
私は部分的な結果は、IEを取得:5.3% instead of 15.3%
を、私はすなわち、同じ出力の中に複数の結果を得る:12.5% & 13.2%
はこれを標準化するとにかくので、私は唯一の100に至るまでの0%を取得しています%?
おかげ
感謝。私は実際にそれを働いたが、あなたの答えは私が思いついたものと事実上同じです。私が追加した唯一の他のものは、5文字があれば結果をエコーすることです。この結果は少し休止し、プロセスは '10.0%'で始まります。これは、数字の欠落箇所が2つある場合にうまく機能します。 – Tom