プログラミングで飯を食え。腕をあげたきゃ備忘録!

PHP、JavaScript、HTML5、CSS3などWEB系言語を中心に基本テク、備忘録をまとめます。Android、Iphoneアプリ開発についても!

PHPとjQueryでアップロードのプログレスバーを作る方法!手順書①「基礎知識」

サクウェブTVはコチラ↓↓↓
サクウェブTV

PHP5.4より前はプログレスバーの実装はAPCのインストールを必要としました。

しかし、PHP5.4以降は

INI オプション session.upload_progress.enabled

を有効にすることでアップロードの進捗をPHPから追えるようになりました。

ちなみにINI オプション session.upload_progress.enabledは変更可否が「PHP_INI_PERDIR」なのでini_set()で変更することはできませんが、PHP5.4ではデフォルトで'1'が設定されているので特段の設定なしで使用できます。

INI オプション session.upload_progress.enabledはアップロードの進捗状況の情報を$_SESSIONに配列として格納します。

そして、進捗状況が格納された$_SESSIONはアップロード完了後にdeleteされますので、アップロードが進行中の場合のみ値が取得できるというわけです。

疑問に思う人のために

しかし、疑問に思う人もいると思うので先に書いておきます。

$_SESSIONに格納してあるということは1度のアクセスで値を1度しか取得できないのでは?

プログレスバーの作成には、アップロード進行中断続的に値を取得できることが必要なのでは?

はい。その通りですね。

PHPだけ使用する場合にはプログレスバーは作れません。

そこでJavaScriptAjaxをsetInterval()やsetTimeout()と併用すれば、PHPで取得した進捗状況を断続的に取得し続けられます。

 

 

さて、基礎知識はここまで。

次の記事では、説明は後回しにしてとりあえず動くものを作ってしまいます。

動くものだけほしいって方はそこだけでよいと思います。

応用・カスタマイズしたい方はそれ以降も読んでください。

>>PHPとjQueryでアップロードのプログレスバーを作る方法!手順書②<<