ホームページ >php教程 >php手册 >phplock (php プロセス ロック) v1.0 ベータ 1

phplock (php プロセス ロック) v1.0 ベータ 1

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:20:481282ブラウズ

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
rn"; >flush ();
ob_flush();
sleep (5); // 20 秒間スリープし、同時実行をシミュレートします
echo "実行が完了しました"
$lock -> ;unlock ();
$lock->endLock ();
echo "ロック解除完了
rn"; getCache ($key) {
return $cache;
}
/**
* キャッシュ操作
*
* @return $array
*/
function setCache($key,$value) {

}
$cache=getCache($key);
if (! $cache) {
//キャッシュが存在しないため、ロックを開始します
$lock = new PHPLock ('lock/', $key) ;
$lock->startLock ();
$lock->startLock ();
//キャッシュを再構築するためのアクセスがあった可能性があります。したがって、データベースを再度クエリする必要はありません
$cache=getCache();
if(!$cache){
//データベース クエリ操作、コードは省略されます
$data= $dbdata;
setCache($key,$data );
}
// ロックを解除します
$lock->unlock (); ;
}
?>


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

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