PHP5.4からは、ファイルアップロード時の進捗を知ることができるようになりました。 CakePHP3でハマったポイントがありましたのでここに列挙します:
セッション管理の方法
app.php
では、セッション管理の方法を以下の様に指定できます:
'Session' => [ 'defaults' => 'php', ],
ここでdefaults
の値にphp
を指定している場合はOKですが、database
の場合は進捗を取得できません。database
を使いつつ、進捗を取得するにはおそらく、カスタムのセッションハンドラーを作る必要があります。
php.iniのsession.nameとCakePHPのsession.name
デフォルトでは、php.iniのsession.nameはPHPSESSID、CakePHPはCAKEPHPです。 これをどちらかに寄せる必要があります:
CakePHP側をphp.iniに寄せる場合
app.phpを次のように変更します:
'Session' => [ 'defaults' => 'php', 'cookie' => 'PHPSESSID' ],
php.iniをCakePHPに寄せる場合
php.iniの設定を次のように変更します:
session.name = CAKEPHP
上記のどれか1つでも抜けていると、$_SESSION
を覗いても進捗に関する変数が入ってない現象が発生します。