Application du mécanisme de verrouillage en PHP

不言
Libérer: 2023-04-03 13:22:02
original
2408 Les gens l'ont consulté

Cet article vous présente l'application du mécanisme de verrouillage en PHP. Il a une bonne valeur de référence et j'espère qu'il pourra aider les amis dans le besoin.

Environnement d'application

Résoudre la situation de concurrence élevée et d'inventaire négatif

Mode de blocage

Si d'autres processus ont verrouillé le fichier, le processus en cours attendra pour toujours Continuer l'exécution après que d'autres processus ont déverrouillé le fichier

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

Mode non bloquant

Si d'autres processus ont verrouillé le fichier, le processus en cours n'attendra pas d'autres processus pour déverrouiller le fichier et directement Retour>, c'est-à-dire ignorer directement le code de verrouillage et accéder au bloc de fermeture du fichier

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

code

flock($fp, LOCK_EX) et flock($fp,LOCK_EX | LOCK_NB) changez-le, tout le reste est pareil

<?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('已经没有产品了');
Copier après la connexion

Test de concurrence

Vérifiez si l'inventaire de la base de données est cohérent et reste à 0 paramètres ab : -c : nombre de simultanéités ; -n : nombre total de requêtes

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

Recommandations associées :

Comment utiliser PHP pour compresser des images dans des proportions égales

Écriture de commandes shell sur la ligne de commande PHP Exemple

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!