PHP + uploadprogressのは、アップロードの進捗機能を実装します

ファイルのアップロードの進行状況のフィードバックは、この需要は現在、このような大規模な電子メールの添付ファイルとして、より一般的である。過去にPHP5.4、我々はによってできる APC 機能が提供され、またはPECL拡張使用実装する uploadprogressのを 達成するために。けれども、彼らは非常にすることができ問題に良い解決策になりましたが、明らかな欠点があります。
  • 1.彼らは(我々はAPC PHP5.4に参加するつもりはありません)をインストールする必要があります
  • 2.彼らはすべての情報を格納するためのローカルメカニズムを使用する場合、複数のフロントエンドマシントラブルを引き起こすことができ、APCは、共有メモリを使用し、及び(NFSに関係なく)uploadprogressのファイルシステム。
ビューのPHP点から場所、最高の店舗このような情報は、まず、それがPHPネイティブ支持機構であり、SESSIONでなければならない。第二に、このため。(複数のマシンの共有をサポートするために)どこにでも格納するように構成することができます。アルノールブランは、セッションのアップロード進捗レポートのために作られた RFC 、そして今も、この新機能に含まPHP5.4のバックボーンに達成され、いくつかの新しいINI設定を提供し、APCおよびそれらに関連する構成が非常に似ています:
  • session.upload_progress.enabled [= 1]:アップロードの進捗レポートを有効にするかどうか(デフォルトで有効)
  • session.upload_progress.cleanup [= 1]:アップロードが完了した後、タイムリーな進歩はデータを削除(デフォルトで有効になって、それが開くことをお勧めします)。
  • session.upload_progress.prefix [= upload_progress_]:_SESSIONに格納されたデータを進行[session.upload_progress.prefix _POST [session.upload_progress.name]
  • session.upload_progress.name [= PHP_SESSION_UPLOAD_PROGRESS]:_POSTは[session.upload_progress.name]に設定されていない場合は、進捗状況を報告しません。
  • session.upload_progress.freq [= 1%]:更新頻度(処理されたバイトの数)の進行、百分率「%」をサポートします。
  • session.upload_progress.min_freq [= 1.0](秒)進捗更新間隔
下記のアップロードフォームの場合:
     <form action="upload.php" method="POST" enctype="multipart/form-data">
     <input type="hidden"
         name="<?php echo ini_get("session.upload_progress.name"); ?>" value="laruence" />
     <input type="file" name="file1" />
     <input type="file" name="file2" />
     <input type="submit" />
    </form>
我々は(速度がさらに良く十分に遅い場合:P)大きなファイルをアップロードするのに十分持っている場合、我々は_SESSIONから、次のスケジュールのような情報を取得できます。  
  $_SESSION["upload_progress_laruence"] = array(
     "start_time" => 1234567890, // 请求时间
     "content_length" => 57343257, // 上传文件总大小
     "bytes_processed" => 453489, // 已经处理的大小
     "done" => false, // 当所有上传处理完成后为TRUE
     "files" => array(
      0 => array(
       "field_name" => "file1", // 表单中上传框的名字
       // The following 3 elements equals those in $_FILES
       "name" => "foo.avi",
       "tmp_name" => "/tmp/phpxxxxxx",
       "error" => 0,
       "done" => true, // 当这个文件处理完成后会变成TRUE
       "start_time" => 1234567890, // 这个文件开始处理时间
       "bytes_processed" => 57343250, // 这个文件已经处理的大小
      ),
      // An other file, not finished uploading, in the same request
      1 => array(
       "field_name" => "file2",
       "name" => "bar.avi",
       "tmp_name" => NULL,
       "error" => 0,
       "done" => false,
       "start_time" => 1234567899,
       "bytes_processed" => 54554,
      ),
     )
    );
PHP変数を作る私たちを助けるためにも、歓迎のフィードバックこれは非常に便利ではないでしょうか?しかし、まだ思い出させるために持っているあなたはどんな提案がある場合、PHP 5.4は、最終的なリリースの前に、全く新しい機能を調整または変更される可能性があるない、まだ開発段階にありますこれは、より良い切り替え:. http://www.laruence.com/2011/10/10/2217.html この記事のアドレスをします。http://www.ttlsa.com/html/2716.html

ます。https://my.oschina.net/766/blog/210869で再現

おすすめ

転載: blog.csdn.net/weixin_33973600/article/details/91545889