0

PHP5.4 は、セッション アップロードの進行状況を示します。私はそれが機能することに気付きましたが、session.save_handlerが に設定されfilessession.name変更されていない場合のみです。これらの値を変更するとすぐに、スーパーグローバル$_SESSION['upload_progress_<key>']は空/未設定になります。

セッション アップロードの進行状況を示すことは可能ですが、カスタム セッションの処理は可能ですか? 保存ハンドラーでさえmemcache機能しません...

4

2 に答える 2

2

@Marc が指摘しているように: アップロードの進行中、ユーザーの PHP コードに制御が渡される前に、Session Upload Progress インジケータが実行ます。その結果、php アップロード ハンドラーは.iniファイル内の構成データ セットを使用し、その時点で使用可能なモジュールのみを使用できます。

すべてがファイルmemcacheで構成されている限り、save-handlerを使用するか、別のセッション名を指定することができます。.ini

session.save_handler = memcache
session.save_path = "tcp://198.51.100.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15,tcp://198.51.100.2:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
session.name = "myUploadProgressSession"

ini_set("session.save_handler", "memcache")これは実行が遅すぎるため、コードでこれらの設定を指定することはできません。

于 2013-01-16T16:52:22.700 に答える
0

session.save_handler がファイルに設定されている場合にのみ session.upload_progress が機能することは事実ですが、それでも管理できます。アップロードの進行状況を確認する ajax 呼び出しでは、ユーザー session.save_handler の使用を避けてください。アップロードが完了したら、一時ディレクトリに残る不要な sess_xxx ファイルを削除できます。これは、ユーザー セッションのセットアップで次の手順を実行します。

//setup the garbage collection parameters which will be used by both the user and file session.save_handler

ini_set('session.gc_maxlifetime', $this->tempo);
ini_set('session.gc_probability', '1');
ini_set('session.gc_divisor', '100');

//destroy the sess_xxx files left from the file session.save_handler for *this* session 
//and let the GC remove any which are left over from the file save_handler for *other sessions*

ini_set('session.save_handler', 'files');
session_start();
session_unset();
session_destroy(); //this will remove the sess_xxx temp files

//now set the handler to user defined

ini_set('session.save_handler', 'user');
于 2015-03-26T11:33:49.983 に答える