PHP5.4提供Session Upload Progress指示。我注意到它是有效的,但只有在session.save_handler
设置为files
,并且session.name
未被修改。只要我修改这些值,超全球$_SESSION['upload_progress_<key>']
是空的/未设置。PHP会话上传自定义会话处理器进度
是否可以提供会话上传进度指示,但有自定义会话处理?甚至可以保存处理memcache
不工作...
PHP5.4提供Session Upload Progress指示。我注意到它是有效的,但只有在session.save_handler
设置为files
,并且session.name
未被修改。只要我修改这些值,超全球$_SESSION['upload_progress_<key>']
是空的/未设置。PHP会话上传自定义会话处理器进度
是否可以提供会话上传进度指示,但有自定义会话处理?甚至可以保存处理memcache
不工作...
由于@Marc指出:会议上传进度指示运行而上传仍在进行中,之前控制权移交给用户的PHP代码。因此,php上传处理程序使用.ini
文件中设置的配置数据,并且只能使用当时可用的模块。
有可能使用memcache
保存处理程序,或指定一个不同的会话名称,只要一切都被配置在.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")
中指定这些设置代码,因为这被执行得太晚了。
在Fedora/Centos中,你必须小心,因为有一个覆盖php.ini设置的apache文件conf.d/php.conf。对我来说最好的办法是在.htacess文件中进行设置,这样应用程序和进度上传器都将使用相同的会话配置。 – danidacar
虽然session.upload_progress只有在session.save_handler设置为文件的情况下才有效,但仍然可以进行管理。在您检查上传进度的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');
没有。以这种方式来看待它 - php必须能够加载会话文件来更新会话密钥和上传进度,并完全独立于您的代码。如果您使用的是自定义处理程序,那么PHP会以某种方式必须能够处理您的处理程序所做的所有事情,但无需知道您的代码。 –
我从此得出同样的结论! thx – Hank