Heim > Artikel > Backend-Entwicklung > Ausführliche Erläuterung von Sitzungsfreigabefällen unter Lastausgleich in PHP (mit Code)
Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Sitzung-Freigabe unter PHP-Lastausgleich geben (mit Code). Das Folgende ist ein praktischer Fall, werfen wir einen Blick darauf. Lassen Sie uns zunächst über den Lastausgleich sprechen. Ich glaube, jeder weiß, dass der Lastausgleich das Problem des großen Website-Verkehrs gut lösen kann, da die Anforderungen auf polymorphe PCs verteilt werden Dann müssen Sie überlegen, wie Sie mit der Sitzung umgehen sollen. In diesem Fall wird die Sitzung jedoch nach der Verteilung verloren gehen Hosten Sie es separat. Richten Sie einen Server ein, der als Memcache-Server verwendet werden soll (es ist besser, einen größeren Speicher zu haben) und überlassen Sie dann die nächste Arbeit dem
PHP-Code.ini hier, weil es zu anstrengend ist, alles zu ändern, und ich bin faulVielleicht sagen Sie mir, dass Sie einfach den Sitzungsspeicherort von
php.iniändern, um in den Memcache zu schreiben , Ja, das stimmt, aber diese Methode kann gc nicht aufrufen, um die abgelaufene Sitzung freizugeben, und was wir heute sagen möchten, ist, dass sie nicht nur gehostet wird, sondern auch die Sitzung automatisch freigibt Da wir es tun müssen, müssen wir es perfekt machen. Unten ist mein Code. Wenn Sie nicht wissen, wie man die Kommentare selbst liest:
$_ENV=array( 'SYS'=>array( 'Memip'=>'127.0.0.1', //MEMCACHE的ip 'Mempt'=>11211, //MEMCACHE的port 'Memtim'=>10, //MEMCACHE的超時時間 ) ); //托管SESSION到MEMCACHE,如果开启失败,则说明MEMCACHE没有配置正确 final class S{ public static function open(){ //禁止session自动开启 session_write_close(); ini_set('session.auto_start',0); //使用五十分之一的概率启动gc清理会话 ini_set('session.gc_probability',1); ini_set('session.gc_pisor',50); ini_set('session.use_cookies',1); //session的寿命 //ini_set('session.gc_maxlifetime',$_ENV['SYS']['Memtim']); //ini_set('session.cookie_lifetime',$_ENV['SYS']['Memtim']); //ini_set('session.save_handler','files'); //ini_set('session.save_path',Run.'_tmp'); //ini_set('session.save_handler','memcache'); //ini_set('session.save_path','tcp://127.0.0.1:11211'); //$_ENV['S_tim'] = ini_get('session.gc_maxlifetime'); //建立memcache对象 $_ENV['S_mem']=new Memcache; $_ENV['S_mem']->connect($_ENV['SYS']['Memip'],$_ENV['SYS']['Mempt']) or die('Memcache連接失敗!'); return TRUE; } /** 读取 返回:读到的內容 /**/ public static function read($id){ return $_ENV['S_mem']->get('s_'.$id); } /** 写入 返回:bool /**/ public static function write($id,$data){ return $_ENV['S_mem']->set('s_'.$id,$data,MEMCACHE_COMPRESSED,$_ENV['SYS']['Memtim']); } /** 关闭 返回:bool /**/ public static function close(){ $_ENV['S_mem']->close(); unset($_ENV['S_mem'],$_ENV['SYS']['Memtim']); return TRUE; } /** 刪除 返回:bool /**/ public static function destroy($id){ return $_ENV['S_mem']->delete('s_'.$id); } /** 清理 返回:bool /**/ public static function gc(){ return TRUE; } } session_set_save_handler('S::open','S::close','S::read','S::write','S::destroy','S::gc'); $_ENV['sessionid']=(isset($_REQUEST['sessionid'])) ? trim($_REQUEST["sessionid"]) : session_id(); if($_ENV['sessionid']!=''){session_id($_ENV['sessionid']);} session_start();
Ich glaube, Sie haben das gemeistert Methode, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Detaillierte Erläuterung der Schritte zur Verwendung der Verschlüsselung der PHP-App-EntwicklungsschnittstellePHP Curl mit CSRF -Token-Verifizierung Detaillierte Erläuterung der simulierten EinreichungsbeispieleDas obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Sitzungsfreigabefällen unter Lastausgleich in PHP (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!