2012-07-27 18 views
7

Ho una pagina in cui poche migliaia di utenti possono utilizzare un metodo contemporaneamente. Ho il seguente codice dove mi connetto ogni volta. Dato che questo andrà su un server memcache separato, questo causerà rallentamenti. C'è un modo per connettersi solo una volta e riutilizzare quella connessione? Devo chiudere la connessione dopo ogni richiesta?Memcache PHP connect

$primary_connected = $memcache_primary->connect($primary_memcache_server, 11211); 
if($primary_connected){ 
     $data = $memcache_primary->get($key); 
     if ($data != NULL) { 
      return data; 
     } 
} 
else{ 
/////Get data from database 
} 

risposta

3

Se si utilizza la classe PHP memcached (quello con la d alla fine, non memcache) allora sì, è possibile aprire una connessione permanente.

È possibile passare un ID persistente al costruttore che aprirà una connessione permanente e le istanze successive che utilizzano lo stesso ID persistente utilizzeranno tale connessione.

$memcached = new Memcached('method_name_or_persistent_identifier'); 
$memcached->addServer(...); 
// use it 

Spero che questo aiuti.

Vedere Memcached::__construct() per ulteriori dettagli.

+0

Grazie! Ho usato memcache e non memcached. Mi trasferirò su memcached ora poiché consentono la connessione di persistenza. È memcached solo una nuova versione di memcache? Grazie –

+1

Sì, 'Memcached' è solo una versione più recente che supporta più funzionalità come le connessioni persistenti e token CAS. Vedi [questa domanda e risposta accettata] (http://stackoverflow.com/questions/1442411/using-memcache-vs-memcached-with-php) per ulteriori dettagli. Usa l'estensione 'Memcached' dove possibile e non' memcache' – drew010

+0

Grazie. Un'altra domanda . Se utilizzo http://php.net/manual/en/memcache.pconnect.php causerà problemi. Poiché ho già implementato memcache e volevo vedere la differenza di prestazioni dopo aver installato memcached. Se non vedo alcun vantaggio con esso il modo in cui sto usando andrò con memcache. –