Maison > Article > développement back-end > Application du mécanisme de verrouillage en PHP
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.
Résoudre la situation de concurrence élevée et d'inventaire négatif
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) // 文件锁
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) // 文件锁
flock($fp, LOCK_EX)
et flock($fp,LOCK_EX | LOCK_NB)
changez-le, tout le reste est pareil
<?php $fp = fopen('lock.txt', 'r'); 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('已经没有产品了');
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!