Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Techniken zur Implementierung der Sitzungsfreigabefunktion unter Lastausgleich

PHP-Techniken zur Implementierung der Sitzungsfreigabefunktion unter Lastausgleich

jacklove
jackloveOriginal
2018-06-27 17:46:392514Durchsuche

In diesem Artikel wird hauptsächlich die Sitzungsfreigabefunktion unter Lastausgleich in PHP vorgestellt und die zugehörigen Implementierungstechniken der Memcache-basierten Sitzungsfreigabe in Form von Beispielen analysiert.

Die Beispiele in diesem Artikel beschreiben, wie PHP die Sitzungsfreigabefunktion unter Lastausgleich implementiert. Ich teile es Ihnen als Referenz mit:

Ich war in letzter Zeit damit beschäftigt, das Programm für die vierte Ausgabe der Taiwan Sports Lottery zu entwickeln, daher habe ich schon lange nichts mehr geschrieben. Heute habe ich gerade etwas geschrieben, das ich mit Ihnen teilen möchte. Lassen Sie uns zunächst über den Lastausgleich sprechen. Ich glaube, jeder weiß, dass der Lastausgleich das Problem des großen Website-Verkehrs lösen kann Da die Anfrage verteilt wird, muss die Sitzung in Betracht gezogen werden. Traditionell speichert PHP die Sitzung in der lokalen temporären Datei, aber in diesem Fall geht die Sitzung verloren Die einfachste Lösung besteht darin, Memcache zum Hosten zu verwenden und einen separaten Server einzurichten (es ist am besten, einen größeren Speicher zu haben), und die nächste Arbeit kann dem PHP-Code überlassen werden Ich möchte php.ini hier ändern, weil es zu ermüdend wäre, es für jeden Server zu ändern, und ich bin faul

Vielleicht sagen Sie mir, dass ich einfach den Sitzungsspeicherort von

php.ini Ja, das stimmt, aber Sie können die abgelaufene Sitzung nicht auf diese Weise freigeben. Wir möchten heute nicht nur darüber sprechen, ob sie gehostet werden kann, sondern auch, ob sie möglich ist Geben Sie die Sitzung automatisch frei.

Da Sie es tun möchten, müssen Sie es perfekt machen. Hier ist mein Code. Ich weiß nicht, wie ich Kommentare selbst lesen soll:

$_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();

Artikel, die Sie interessieren könnten:

php Unbegrenzte Kommentarverschachtelung, Implementierungscode, PHP-Kenntnisse


PHP-Implementierung von Funktionen zum Hinzufügen, Löschen, Überprüfen und Ändern von Datenbanken und vollständigem Code-PHP-Beispiel


PHPMAILER implementiert PHP-E-Mail-Funktions-PHP-Beispiel


Das obige ist der detaillierte Inhalt vonPHP-Techniken zur Implementierung der Sitzungsfreigabefunktion unter Lastausgleich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn