Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung von Sitzungsfreigabefällen unter Lastausgleich in PHP (mit Code)

Ausführliche Erläuterung von Sitzungsfreigabefällen unter Lastausgleich in PHP (mit Code)

php中世界最好的语言
php中世界最好的语言Original
2018-05-16 15:52:502307Durchsuche

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-Entwicklungsschnittstelle


PHP Curl mit CSRF -Token-Verifizierung Detaillierte Erläuterung der simulierten Einreichungsbeispiele

Das 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!

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