ホームページ >バックエンド開発 >PHPチュートリアル >PHPにおけるロック機構の応用

PHPにおけるロック機構の応用

不言
不言オリジナル
2018-07-28 10:05:582433ブラウズ

この記事は、PHP のロック機構の応用に関する記事を紹介しています。非常に参考になるので、困っている友人の助けになれば幸いです。

アプリケーション環境

高い同時実行性とマイナス在庫の状況を解決する

ブロッキング モード

他のプロセスがファイルをロックしている場合、現在のプロセスは待機します。他のプロセスがファイルのロックを解除した後も実行を継続します

flock($fp, LOCK_EX) //ファイル ロック

ノンブロッキング モード

If otherプロセスが追加されました ファイルをロックします。現在のプロセスは他のプロセスがファイルのロックを解除するのを待たずに、直接戻ります。つまり、ロック コードを直接無視して、ファイルを閉じるブロックに進みます。

flock($fp,LOCK_EX | LOCK_NB) //ファイル ロック

コード

flock($fp, LOCK_EX) および flock( $fp,LOCK_EX | LOCK_NB) 置換 クリックするだけで、他はすべて同じです

<?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('已经没有产品了');

同時実行テスト

データベース インベントリに一貫性があり、ab パラメータが 0 のままであるかどうかを確認します: -c : 同時実行数; -n: リクエストの合計数

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

関連する推奨事項:

php均等な比率を実現する方法画像を圧縮するコード

php コマンド ラインからのシェル コマンドの記述例

以上がPHPにおけるロック機構の応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。