検索
ホームページバックエンド開発PHPチュートリアルPHP は APC モジュールを使用してファイル アップロードの進行状況バーを実装します。_PHP チュートリアル

PHP は APC モジュールを使用してファイルアップロードの進行状況バーを実装します

この記事の例では、PHP が APC モジュールを使用してファイル アップロードの進行状況バーを実装する方法について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:

php5.2 より前のバージョンでは、そのような APC モジュールが存在しなかったため、APC モジュールを使用できませんでした。APC モジュールを使用してアップロードプログレスバーを実装したい場合は、php5.2 以降である必要があります。

5.2 以降、APC は APC_UPLOAD_PROGRESS と呼ばれるものを追加しました。これにより、長い間誰もが悩まされてきたプログレス バーの問題が解決されます。また、アップロード中にすべての一時ファイルをメモリにキャッシュするという元の方法を、一時ファイルが設定値に達すると自動的にハードディスクに保存するように変更し、メモリ使用率を効果的に改善しました。

アップロード時に各アップロードに一意の ID を与えることで機能します。PHP スクリプトがアップロードされたファイルを受け取ると、インタープリターは $_POST 配列内の APC_UPLOAD_PROGRESS という名前の隠しフィールドを自動的にチェックします。このフィールドは、アップロードに関する情報を保存します。これにより、スクリプトはアップロード ID を介して、アップロードされたファイルに関するステータス情報にアクセスできるようになります。

APC は Alternative PHP Cache の略称で、無料で公開されている PHP 用に最適化されたコード キャッシュです。これは、PHP 中間コードをキャッシュおよび最適化するための、無料でオープンかつ堅牢なフレームワークを提供するために使用されます。

APCモジュールのパラメータ設定、コードは次のとおりです:

コードをコピーします コードは次のとおりです:
名前 デフォルト 変更可能 変更履歴
apc.enabled 1 PHP_INI_ALL
apc.shm_segments 1 PHP_INI_SYSTEM
apc.shm_size 30 PHP_INI_SYSTEM
apc.optimization 0 PHP_INI_ALL
apc.num_files_hint 1000 PHP_INI_SYSTEM
apc.ttl 0 PHP_INI_SYSTEM
apc.gc_ttl 3600 PHP_INI_SYSTEM
PHP_INI_SYSTEM 上の apc.cache_by_default
apc.filters "" PHP_INI_SYSTEM
apc.mmap_file_mask "" PHP_INI_SYSTEM
apc.slam_defense 0 PHP_INI_SYSTEM
apc.file_update_protection 2 PHP_INI_SYSTEM
apc.enable_cli 0 PHP_INI_SYSTEM > APC 3.0.6
設定が完了したので、プログラムを書き始めましょう

XML/HTML コードは次のとおりです:

コードをコピーします コードは次のとおりです:
動画のタイトル: 動画の説明: 動画タグ (カンマ区切り) から割り当てる唯一のアップロード パラメーターです。 フォーム>


最も重要なことは、APC_UPLOAD_PROGRESS の隠しフィールドです。これを使用すると、スクリプトは現在アップロードされているファイルのステータスにアクセスし、アップロード ステータスを表示できます。
以下は、Jqueryフレームワークとjsonを使用してメッセージを送信するためのスクリプトです。

JavaScript コードは次のとおりです
:



コードをコピーします

コードは次のとおりです:
関数 getProgress(upid){
var url = "epadmin/upprocess"; $.getJSON(
URL、
{ progress_key: upid }、
関数(json){
$("#progressinner").width(json.per+"%"); $("#upstatus").html('ファイル サイズ:'+json.total+'KB'+' アップロード済み:'+json.current+'KB'); if (json.per setTimeout(function(){
getProgress(upid)
}、10); }その他{
$("#upstatus").html("ビデオのアップロードが完了しました。データは処理中です。お待​​ちください..."); }
}
)
}
関数 startProgress(upid){
$("#progressouter").css({ 表示:"ブロック" }); setTimeout(function(){
getProgress(upid)
}、100); }

次に、アップロードステータスを読み取るための PHP コードです。アップロードされたファイルの処理については、次のように記述できます。


コードをコピーします

コードは次のとおりです:

//アップロードファイル操作関数、必要に応じて記述できます
関数 upflvAction()
{ if($_SERVER['REQUEST_METHOD']=='POST'){ $subject = トリム($this->f->filter($this->_request->getPost('subject'))); $content = trim($this->f->filter($this->_request->getPost('content'))); Zend_Loader::loadClass('Custom_FlvOp'); $flv = 新しい Custom_FlvOp ; $flv->uploadFlv('upfile',$subject,$content); } }
//これはアップロードステータスを読み取る関数です~~
関数 upprocessAction()
{
if(isset($_GET['progress_key'])) {
$status = apc_fetch('upload_'.$_GET['progress_key']); $json = 配列(
'per'=>$status['current']/$status['total']*100,
'total'=>round($status['total']/1024),
'current'=>round($status['current']/1024),
); require_once("Zend/Json.php"); エコー Zend_Json::encode($json); }
}

APC 構成に関する詳細な説明:

apc.enabled ブール値

apc.enabled を 0 に設定すると、APC を無効にすることができます。これは、APC が静的に PHP にコンパイルされる場合に主に役立ちます。DSO にコンパイルされる場合は、コメントアウトで php.ini を変更できるためです。内線

apc.shm_segments 整数

コンパイル キャッシュに割り当てられた共有メモリ ブロックの数。APC が共有メモリを使い果たし、apc.shm_size をシステムが許可する最大値に設定している場合は、このパラメータの値を増やすことを試みることができます。

apc.shm_size 整数

各共有メモリ ブロックのサイズは MB 単位です。デフォルトでは、一部のシステム (ほとんどの BSD バリアントを含む) では、共有メモリ ブロック サイズの制限が非常に低く設定されています。

apc.optimization 整数

最適化レベル。最適化を無効にするには 0 に設定します。値が大きいほど、より強力な最適化が使用されます。多少の速度向上が期待できます。これはまだ実験的な性質のものです。

apc.num_files_hint 整数

Web サーバーに含まれ、リクエストされているさまざまなソース ファイルの数に関するヒント。よくわからない場合は、0 に設定するか省略してください。この設定は、主に何千ものソース ファイルがあるサイトで役立ちます。

apc.ttl 整数

キャッシュ内のキャッシュ エントリの場所が別のエントリで必要とされる場合、考慮する必要があるのは、キャッシュ内のこのキャッシュ エントリの場所がアイドル状態にできる秒数です。このパラメータを 0 に設定すると、キャッシュが古いエントリでいっぱいになる可能性があり、新しいエントリはキャッシュされなくなります。

apc.gc_ttl 整数

キャッシュ エントリがガベージ コレクション リスト内に存在する秒数。この値は、キャッシュされたソース ファイルが実行され、同時にサーバー プロセスが停止した場合のエラー保護を提供します。そのソース ファイルが変更された場合、古いバージョンのキャッシュ エントリに割り当てられたメモリは、このパラメータで設定された TTL 値に達するまで再利用されません。 0 に設定すると、この機能が無効になります。

apc.cache_by_default ブール値

デフォルトはオンですが、オフに設定して、プラス記号で始まる apc.filters とともに使用すると、ファイルはフィルターに一致する場合にのみキャッシュされます。

apc.filters 文字列

POSIX 拡張正規表現のカンマ区切りリスト。いずれかのパターンがソース ファイル名と一致する場合、そのファイルはキャッシュされません。一致に使用されるファイル名は、絶対パスではなく、include/require に渡されたファイル名であることに注意してください。正規表現の最初の文字が + の場合、その式は、その式に一致するファイルがキャッシュされることを意味し、最初の文字が - の場合、一致するファイルはキャッシュされません。 - はデフォルト値なので省略できます。

apc.mmap_file_mask文字列

apc.slam_defense 整数

非常に負荷の高いサーバーでは、サービスを開始するかファイルを変更するかにかかわらず、同じファイルを同時にキャッシュしようとする複数のプロセスで競合が発生します。このオプションは、プロセスがキャッシュされていないファイルのキャッシュ試行をスキップする割合を設定します。または、これを単一プロセスがキャッシュをスキップする確率と考えてください。たとえば、apc.slam_defense を 75 に設定すると、プロセスは 75% の確率でキャッシュされていないファイルをキャッシュしないことになります。したがって、設定を高くすると、キャッシュの衝突確率が低下する可能性が高くなります。この機能を無効にするには、0 に設定します。

apc.file_update_protection 整数

実行中のサーバー上のファイルを変更するときは、アトミック操作を実行する必要があります。つまり、最初に一時ファイルを書き込み、終了したらファイルの名前を最終的な場所に変更 (mv) します。多くのテキスト エディタ、cp、tar、およびその他の同様のプログラムは、このようには動作しません。これは、ファイルの書き込み中にファイルにアクセスして (キャッシュする) 機会があることを意味します。 apc.file_update_protection の設定により、キャッシュによる新しいファイルのマーク付けが遅延します。デフォルト値は 2 です。これは、ファイルの変更時間がアクセス時間から 2 秒未満であることが判明した場合、ファイルはキャッシュされないことを意味します。不運なユーザーが書きかけのファイルにアクセスすると、奇妙な動作が発生する可能性がありますが、少なくとも永続的なものではありません。ファイルの更新にアトミック操作を頻繁に使用することが確実な場合は、このパラメータを 0 に設定することでこの保護をオフにできます。システムに IO 操作が殺到し、更新プロセスに 2 秒以上かかる場合は、この値を増やす必要がある場合があります。

apc.enable-cli 整数

主にテストとデバッグのために、PHP の CLI バージョンで APC 機能を有効にします。一般的に、CLI リクエストごとに APC キャッシュを作成、移植、破棄することは考えられませんが、さまざまなテスト状況で、これは CLI バージョンで APC を簡単に有効にします。 .

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/947913.html技術記事 PHP は、APC モジュールを使用してファイル アップロードの進行状況バーを実装します。この記事では、APC モジュールを使用してファイル アップロードの進行状況バーを実装する PHP の例について説明します。皆さんの参考に共有してください。具体的な分析は以下の通りです...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター