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 ;br / > $lock->unlock ();
$lock->endLock ();
echo "ロックの解除が完了しました
rn";
function getCache( $key) {
return $cache;
/**
* キャッシュ操作
*
* @return $array
*/
function setCache($key,$value) {
}
$cache=getCache($key);
if (! $cache) {
/ キャッシュが存在しないため、ロックを開始します
$lock = new PHPLock ('lock/', $key);
$lock->startLock ();キャッシュを確認してください。データがあるかどうかは、キャッシュにアクセスして再構築されている可能性があるため、データベースを再度クエリする必要はありません
$cache=getCache()
if(!$cache){
// データベース クエリ操作の場合、コードは省略します
$data=$dbdata ; C Setcache ($ key, $ data)
// ロックを解除します
$ lock- & gt; );
PHPのプロセスロック問題の分析と研究
上記は、bigger than big phplockphp プロセス ロック v10 beta1 の内容を紹介しており、PHP チュートリアルに興味のある友人に役立つことを願っています。