ホームページ  >  記事  >  バックエンド開発  >  phplock (php プロセス ロック) v1.0 beta1_PHP チュートリアル

phplock (php プロセス ロック) v1.0 beta1_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:43:001079ブラウズ

Web 開発では、データベースの時間のかかる操作をキャッシュすることがよくありますが、キャッシュが失敗した瞬間に、大量のアクセスがキャッシュ失敗の通知を受け取り、すべてバックエンドにアクセスしてデータベースにクエリを実行する可能性があります。 、その結果、同時に多数のデータベースが実行され、時間のかかるクエリがデータベースのダウンタイムなどの問題を引き起こす可能性があります。この問題は深く隠されており、見つけるのが困難です。このプロジェクトは主に PHP のプロセス間ロック問題を解決するために使用されます。
例:

コードをコピーします コードは次のとおりです:

/**
* テスト例、同時に 2 ページを開くと、常に 1 ページだけが同時にロック範囲に入ることができるコードを見つけることができます
* @link http://code.google.com/p/phplock/
* @author sunli
* @svnversion $Id: test.php 2 2009-11-24 07:14:27Z sunli1223 $
* @version v1.0 beta1
* @license Apache ライセンス バージョン 2.0
* @copyright sunli1223@ gmail.com
*/
require 'class.phplock.php';
$lock = new PHPLock ( 'lock/ ', 'lockname' );
$lock->startLock ();
//プロセスコード
echo "Enter lock $lock->unlock ();
$lock->endLock ();
echo "ロックの解除が完了しました
rn";
function getCache( $key) {
$cache を返す
}
/**
* キャッシュ操作
*
* @return $array
*/
function setCache($key,$value) {

}
$cache=getCache($key); ) {
//キャッシュが存在しないため、ロックを開始します
$lock = new PHPLock ('lock/', $key);
$lock->startLock (); // キャッシュにデータがあるかどうかを判断します。キャッシュを再構築するためのアクセスがあった可能性があるため、データベースを再度クエリする必要はありません
$cache=getCache()
if(!$cache){
;使用する 使用する 使用するdbdata;
setCache($key,$data)
}
// ロックを解除する
$lock->endLock (); ;
}
?>


関連記事
PHP プロセス ロックの問題の分析と研究



http://www.bkjia.com/PHPjc/320818.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/320818.html

技術記事

Web開発では時間のかかるデータベースの操作をキャッシュすることが多いのですが、キャッシュが無効になった瞬間に大量のアクセスでキャッシュ無効の表示が出るという罠があるかもしれません…


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