Heim  >  Artikel  >  Backend-Entwicklung  >  Anwendung des Sperrmechanismus in PHP

Anwendung des Sperrmechanismus in PHP

不言
不言Original
2018-07-28 10:05:582423Durchsuche

Dieser Artikel führt Sie in die Anwendung des Sperrmechanismus in PHP ein. Er hat einen guten Referenzwert und ich hoffe, er kann Freunden in Not helfen.

Anwendungsumgebung

Lösen Sie die Situation hoher Parallelität und negativem Inventar

Blockierungsmodus

Wenn andere Prozesse die Datei gesperrt haben, wartet der aktuelle Prozess Für immer Ausführung fortsetzen, nachdem andere Prozesse die Datei entsperrt haben

flock($fp, LOCK_EX)     // 文件锁

Nicht blockierender Modus

Wenn andere Prozesse die Datei gesperrt haben, wartet der aktuelle Prozess nicht auf andere Prozesse zum Entsperren der Datei und direkt Zurück>, d 🎜> und

einfach ändern, alles andere ist gleich

<?php
$fp = fopen(&#39;lock.txt&#39;, &#39;r&#39;);
if( flock($fp, LOCK_EX) ){      // flock($fp,LOCK_EX | LOCK_NB)
    $info = D()->query('SELECT surplus_total_num FROM tb_product WHERE id=1 LIMIT 1');
    if( $info['surplus_total_num'] > 0 ){
        D()->execute('UPDATE tb_product SET surplus_total_num = surplus_total_num - 1  WHERE id=1');
        $isSurplusProduct = 1;
    }else{
        $isSurplusProduct = 0;
    }
    flock($fp, LOCK_UN);
}
fclose($fp);

if( !$isSurplusProduct ) exit('已经没有产品了');
flock($fp,LOCK_EX | LOCK_NB)        // 文件锁Parallelitätstest

Überprüfen Sie, ob der Datenbankbestand konsistent ist und 0 bleibt ab Parameter: -c: Anzahl der Parallelitäten; -n: Gesamtzahl der Anfragen

flock($fp, LOCK_EX)flock($fp,LOCK_EX | LOCK_NB)

Verwandte Empfehlungen:

So verwenden Sie PHP, um Bilder in gleichen Anteilen zu komprimieren

ab -c 20 -n 1000 http://www.test.com/test.php

Beispiele für das Schreiben von Shell-Befehlen auf der PHP-Befehlszeile

Das obige ist der detaillierte Inhalt vonAnwendung des Sperrmechanismus in PHP. 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