PHPとjQueryでアップロードのプログレスバーを作る方法!手順書①「基礎知識」
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度しか取得できないのでは?
プログレスバーの作成には、アップロード進行中断続的に値を取得できることが必要なのでは?
はい。その通りですね。
そこでJavaScriptのAjaxをsetInterval()やsetTimeout()と併用すれば、PHPで取得した進捗状況を断続的に取得し続けられます。
さて、基礎知識はここまで。
次の記事では、説明は後回しにしてとりあえず動くものを作ってしまいます。
動くものだけほしいって方はそこだけでよいと思います。
応用・カスタマイズしたい方はそれ以降も読んでください。
>>PHPとjQueryでアップロードのプログレスバーを作る方法!手順書②<<