이 글은 PHP에서 잠금 메커니즘을 적용하는 방법을 소개합니다. 도움이 필요한 친구들에게 도움이 되기를 바랍니다.
높은 동시성 및 부정적인 인벤토리 상황 해결
다른 프로세스가 파일을 잠근 경우 현재 프로세스는 다른 프로세스가 파일을 잠금 해제하고 계속 실행하기를 기다립니다
flock ($fp , LOCK_EX) // 파일 잠금
flock($fp, LOCK_EX) // 文件锁
如果其他进程已经加锁文件,当前进程不会等其他进程解锁文件,直接返> 回,也就是直接忽略加锁的代码到关闭文件那块
flock($fp,LOCK_EX | LOCK_NB) // 文件锁
flock($fp, LOCK_EX)
和 flock($fp,LOCK_EX | LOCK_NB)
换一下就行,其他都一样
<?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('已经没有产品了');
查看数据库的库存是否一致保持为0 ab参数:-c:并发数;-n:总请求数
ab -c 20 -n 1000 http://www.test.com/test.php
flock($fp, LOCK_EX | LOCK_NB) //파일 잠금
flock($fp, LOCK_EX)
및 Flock($fp,LOCK_EX | LOCK_NB)
변경하기만 하면 다른 모든 것은 동일합니다rrreee
ab -c 20 -n 1000 http://www.test.com/test.php
🎜🎜관련 권장 사항: 🎜🎜🎜 이미지를 동일한 비율로 압축하는 방법에 대한 PHP 코드🎜🎜🎜 🎜PHP 명령줄에 쉘 명령을 작성하는 예🎜🎜위 내용은 PHP에서 잠금 메커니즘 적용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!