Heim  >  Artikel  >  php教程  >  phplock (PHP-Prozesssperre) v1.0 Beta1

phplock (PHP-Prozesssperre) v1.0 Beta1

黄舟
黄舟Original
2016-12-14 15:07:401141Durchsuche

In der Webentwicklung speichern wir häufig zeitaufwändige Vorgänge unserer Datenbank, es kann jedoch zu einer Falle kommen. In dem Moment, in dem der Cache ungültig wird, erhalten viele Zugriffe Hinweise auf Cache-Ungültigkeit und alle gehen an das Backend Das Abfragen der Datenbank führt zu einer gleichzeitigen Abfrage einer großen Anzahl von Datenbanken, was zeitaufwändig ist und Probleme wie Datenbankausfallzeiten verursacht. Dieses Problem ist tief verborgen und schwer zu finden. Dieses Projekt wird hauptsächlich zur Lösung des Interprozesssperrproblems von PHP verwendet.
Beispiel:

Kopieren Sie den Code wie folgt:
/**
* Testbeispiel, zwei Seiten gleichzeitig öffnen, Sie können den Code finden, dass immer nur eine Seite gleichzeitig in den Sperrbereich gelangen kann
* @link http://code.google.com/ p/phplock/
* @author sunli
* @svnversion $Id: test.php 2 2009-11-24 07:14:27Z sunli1223 $
* @version v1.0 beta1
* @license Apache-Lizenzversion 2.0
* @copyright sunli1223@gmail.com
*/
require 'class.phplock.php'
$ lock = new PHPLock ( 'lock/', 'lockname' );
$lock->startLock ();
$lock->startLock (); echo "Enter lock
rn";
ob_end_flush();
flush(); //20 Sekunden lang schlafen, gleichzeitige Vorgänge simulieren
echo „Ausführung abgeschlossen
rn“;
$lock->endLock (); 🎜>echo „Sperrenfreigabe abgeschlossen
rn“
/**
* Cache-Operation
*
* @return $array
*/
function getCache($key) {
return $cache; /**
* Cache festlegen
*
* @param string $key
* @param array $value
*/
function setCache($key,$value) {

}
$cache=getCache($key);
if (! $cache) {
//Der Cache existiert nicht, starte das Sperren
$lock = new PHPLock (
$lock->startLock ();
$lock-> ;startLock ();

//Versuchen Sie festzustellen, ob Daten im Cache vorhanden sind. Möglicherweise wurde auf den Cache zugegriffen, sodass keine erneute Abfrage der Datenbank erforderlich ist

$cache=getCache(). ;
if(!$cache) {
//Datenbankabfragevorgang, Code weggelassen
$data=$dbdata;
}
//Sperre freigeben
$lock ->unlock ();
$lock->endLock ();
?>

Weitere verwandte Artikel finden Sie hier Achten Sie auf die chinesische PHP-Website (www.php.cn)!

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