>  기사  >  백엔드 개발  >  더 큰 phplockphp 프로세스 잠금 v10 베타1보다 큽니다.

더 큰 phplockphp 프로세스 잠금 v10 베타1보다 큽니다.

WBOY
WBOY원래의
2016-07-29 08:41:171046검색

웹 개발에서는 시간이 많이 걸리는 데이터베이스 작업을 캐시하는 경우가 많지만 캐시가 실패하는 순간 많은 액세스가 캐시 실패 표시를 받고 모두 백엔드로 이동하여 데이터베이스를 쿼리합니다. , 동시에 많은 수의 데이터베이스가 발생하면 시간이 많이 걸리는 쿼리로 인해 데이터베이스 가동 중지 시간과 같은 문제가 발생할 수 있습니다. 이 문제는 깊이 숨겨져 있으며 찾기가 어렵습니다. 이 프로젝트는 주로 PHP의 프로세스 간 잠금 문제를 해결하는 데 사용됩니다.
예:

코드 복사 코드는 다음과 같습니다.


/**
* 테스트 예, 두 페이지를 동시에 열면 한 페이지만 동시에 잠금 범위에 항상 들어갈 수 있는 코드를 찾을 수 있습니다
* @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(); >$lock ->startLock (); //프로세스 코드
echo "잠금 입력
rn"
ob_end_flush(); >flush ();
ob_flush();
sleep (5); //20초 동안 절전, 동시 작업 시뮬레이션
echo "실행 완료
$lock -> ;unlock ();
$lock->endLock ();
echo "잠금 해제 완료
rn"
/**
* 캐시 작업
*
* @return $array
*/
함수 getCache ($key) {
return $cache;
}
/**
* 캐시 설정
*
* @param string $key
* @param array $value
*/
function setCache($key,$value) {
}
$cache = getCache($key);
if (! $cache) {
//캐시가 존재하지 않습니다. 잠금을 시작합니다
$lock = new PHPLock ('lock/', $key); > $ lock->startLock ();
$lock->startLock ()
//캐시에 데이터가 있는지 확인해보세요. 데이터베이스를 다시 쿼리할 필요가 없습니다.
$ 캐시=getCache();
if(!$cache){
//데이터베이스 쿼리 작업, 코드 생략
$data=$dbdata;
setCache($key,$data);
}
//잠금 해제
$lock->unlock ()
$lock->endLock (); }
?>


관련 추천 기사
PHP 프로세스 잠금 문제에 대한 분석 및 연구
위 내용은 더 큰 내용을 포함하여 더 큰 phplockphp 프로세스 잠금 v10 베타1을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.