PHP は APC を使用してファイルのアップロードの進行状況を取得します

WBOY
リリース: 2016-06-23 14:29:20
オリジナル
919 人が閲覧しました

今日、PHP の APC を使用すると、ファイルのアップロードの進行状況も取得できることを発見しました。この記事ではその方法を説明します。

APC をインストールします

まず、APC をインストールする方法は、インターネット上で多くの PHP モジュールを見つけることができます

phpinfo で、APC のデフォルト設定が次のとおりであることがわかります。設定項目 apc.rfc1867 を見てください:

http://cn2.php.net/manual/en/apc.configuration.php#ini.apc.rfc1867

このドキュメントには、次のようなファイルをアップロードすると記載されています。 POST の APC_UPLOAD_PROGRESS フィールドを指定すると、APC はこの値を使用して Upload_key キャッシュを自動的に作成します

この時点で、ユーザーは ajax を使用して再度呼び出すことができ、現在のファイル アップロード ステータスを取得できます

このステータスには以下が含まれます:

ファイルサイズ 現在アップロードされているファイルサイズ ファイルアップロード速度 (アップロード後にのみ利用可能) 実験: 1 ​​rfc1867 設定項目をオンにします

apc.rfc1867=on

2 オンになっていることが phpinfo() で確認できます

3 php コードをサーバー

apc.php<?phpif($_FILES['file']['error'] == UPLOAD_ERR_OK){   $path = '/tmp/upload/';   $path .= basename($_FILES['file']['name']);   if(move_uploaded_file($_FILES['file']['tmp_name'], $path)){      // upload successful        echo 'sucess';   }}
ログイン後にコピー
にアップロードします

ネットワーク経由でアクセスできることを確認します ページに移動します


http://10.16.15.118:7702/apc.php からアクセスできます

4 進行状況を確認しますサーバー上で php code
getprocess.php<?phpprint_r(apc_fetch("upload_6226f7cbe59e99a90b5cef6f94f966fd"));
ログイン後にコピー

ネットワーク経由でページにアクセスできることを確認してください

これは http://10.16.15.118 :7702/getprocess.php を介してアクセスできます

5 単純なクライアント HTML
<html><body><form enctype="multipart/form-data" method="POST" action="http://10.16.15.118:7702/apc.php"><input type="hidden" name="APC_UPLOAD_PROGRESS" value="6226f7cbe59e99a90b5cef6f94f966fd"/><input type="file" name="file" /><input type="submit" value="submit" /></form></body></html>
ログイン後にコピー
を作成します

注意が必要ですここで、APC_UPLOAD_PROCESS をアップロードするファイルの前に置く必要があること (これはドキュメントにも書かれています)。そうしないと、プロセスを取得できません

6 ファイルをアップロードして apc.php にアクセスします

7 getprocess.php を表示します

次の質問は、中間の遷移状態が本当に存在するのかということです。 1. 大きなファイル (20M+) を見つけます。 2. nginx+php がファイル サイズを 20M を超えて制限していることを確認します。 3. 速度制限のために fidder を有効にします。

この記事に従ってください: http://donchevp.blogspot.com/2009/ 11/limiting-your-internet-connection-speed.html

ルールを設定します - 顧客 - このコードを設定します

       if (m_SimulateModem) {            // Delay sends by 300ms per KB uploaded.            oSession["request-trickle-delay"] = "1";             // Delay receives by 150ms per KB downloaded.            oSession["response-trickle-delay"] = "150";         }
ログイン後にコピー

このリクエスト-トリクル遅延を変更します

次に、シミュレート モードをオンにします。

4 この 20M ファイルを a.html ページからアップロードします 5 getprocess.php を更新し続けます

現在の進行状況を確認できます。アップロードが完了していない場合は、レート フィールドが利用できないことがわかります~~~soいいですね~~

参考記事:

http://www.phppan.com/2012/04/php-upload-progress/

http://donchevp.blogspot.com/2009/11/limiting-your-internet-接続速度.html

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!