オリジナルの作成者 BlueStyle は改善を提案しました:
以前のアルゴリズムはファイルがダウンロードされるのを待ってから計算するものでしたが、
このアルゴリズムはファイルを取得するときにサイズを直接計算するようになりました
フォールトトレラントなステートメントを追加しました
判定ディレクトリを追加しました、ディレクトリは自動的に作成されません
ファイル サイズを計算するためのアルゴリズムが変更されました。以前のコードではファイル サイズを計算するのに 7 行しか必要ありませんでした。現在は、元の作成者の著作権情報を保持してください。転載する場合は、作者が公務員であるため、トラブルを避けるため、このテキストの整合性を保ってください
コードをコピー
コードは次のとおりです:
Happy Feiyang Blog-リモート ファイル ダウンロード< /title>
PHP コード:
コードは次のとおりです:
< ;?php
# Copyright 2010 Happy Flying
# http://www.klfy.org/ 初心者向けリファレンス
set_time_limit (0) //時間制限なし 24 * 60 * 60
$password = 'admin'; //パスワードを管理 $pass = $_POST['password']; if ($pass == $password) { var $StartTime = 0; function get_microtime() {list($usec, $sec) =explode(' ', microtime());
return ((float) $usec + (float)$sec);}
function start() {$this->StartTime = $this->get_microtime();}
関数 stop() {$this->StopTime = $this- >get_microtime();}
関数 Spent() { returnround(($this->StopTime - $this->StartTime) * 1000, 1);}
}
$runtime= 新しいランタイム;
$runtime ->start();
if (!isset($_POST['submit'])) die( );
$destination_folder = './Download/' // ダウンロードされたファイルの保存ディレクトリ。スラッシュで終わる必要があります
if(!is_dir($destination_folder)) //ディレクトリが存在するかどうかを判断します
mkdir($destination_folder,0777); //存在しない場合は、ディレクトリを作成し、Windows に無視されます
$url = $_POST ['url'];
$headers = get_headers($url, 1); //ファイルサイズを取得します
if ((!array_key_exists("Content-Length", $headers)) {$filesize=0;
$ newfname = $destination_folder .basename($url);
$file = fopen ($url, "rb") {
$newf = fopen ($newfname, "wb"); if ($ newf)
while(!feof($file)) {fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );}
}
if ($file) {fclose($file) );}
if ($newf) {fclose($newf);}
$runtime->stop();
echo '
ダウンロード時間:spent().' マイクロ秒、ファイル サイズ '.$headers["Content-Length"].' ;byte';
echo '
ダウンロードが成功しました。 '.$showtime=date("Y-m-d H:i:s").'';
}elseif(isset($_POST['password'])){
echo '< ;br />パスワードが違います!パスワードを再入力してください!'
;
http://www.bkjia.com/PHPjc/321903.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/321903.html
技術記事
元の作者である BlueStyle は改善を提案しました。以前のアルゴリズムは、ファイルがダウンロードされるまで待ってから計算するようになりました。このアルゴリズムは、ファイルを取得するときにサイズを直接計算し、判断力を高めるためにフォールト トレラントなステートメントを追加します。