이 기사의 예에서는 PHP 대기열의 사용을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
큐란 무엇인가요? 특정 애플리케이션에서는 일반적으로 연결 목록이나 배열로 구현됩니다. 큐는 백엔드에서의 삽입 작업과 삭제 작업만 허용합니다. 프런트 엔드에.
어떤 상황에서 대기열이 사용됩니까? 물론, 다른 더 나은 방법도 배제되지 않습니다.
큐는 데이터베이스 서버에 대한 부담을 줄이는 데도 사용할 수 있습니다. 즉각적이지 않은 데이터를 큐에 넣고 데이터베이스가 유휴 상태일 때나 일정 기간 후에 실행할 수 있습니다. 예를 들어, 액세스 카운터의 경우 증가된 SQL을 즉시 실행할 필요가 없습니다. 큐를 사용하지 않는 경우 SQL 문은 다음과 같습니다.
update table1 set count=count 1, 여기서 id=1
update table1 set count=count 1, 여기서 id=1
update table1 set count=count 1, 여기서 id=1
update table1 set count=count 1, 여기서 id=1
update table1 set count=count 1, 여기서 id=1
큐를 사용할 때 다음을 수행할 수 있습니다.
update table1 set count=count 5, 여기서 id=1
SQL 요청 수를 줄여서 서버에 대한 부담을 줄입니다. 물론 방문 횟수가 많지 않은 웹사이트에는 이것이 필요하지 않습니다.
다음 대기열 클래스:
/**
* 대기열
*
* @author jaclon
*
*/
클래스 대기열
{
개인 $_queue = 배열()
보호된 $캐시 = null
보호된 $queuecachename
/**
*시공방법
* @param string $queuename 대기열 이름
*/
함수 __construct($queuename)
{
$this->cache =& 캐시::instance()
$this->queuecachename = 'queue_'
$result = $this->cache->get($this->queuecachename)
if (is_array($result)) {
$this->_queue = $결과
}
}
/**
* 대기열 끝에 단위 단위를 넣습니다
* @param 혼합 $value
*/
함수 enQueue($value)
{
$this->_queue[] = $값
$this->cache->set($this->queuecachename, $this->_queue)
$이것을 반환
}
/**
* 대기열 시작 부분에서 하나 이상의 단위를 제거합니다
* @param int $num
*/
함수 SliceQueue($num = 1)
{
if (count($this->_queue) < $num) {
$num = 개수($this->_queue)
}
$output = array_splice($this->_queue, 0, $num)
$this->cache->set($this->queuecachename, $this->_queue)
$출력 반환
}
/**
* 대기열의 시작 부분에 있는 장치를 대기열에서 제거합니다
*/
함수 deQueue()
{
$entry = array_shift($this->_queue)
$this->cache->set($this->queuecachename, $this->_queue)
$항목 반환
}
/**
* 반환 대기열 길이
*/
함수 크기()
{
반환 횟수($this->_queue)
}
/**
* 대기열의 첫 번째 단위 반환
*/
함수 peek()
{
$this->_queue[0] 반환
}
/**
* 대기열에 있는 하나 이상의 단위를 반환
* @param int $num
*/
함수 픽스($num)
{
if (count($this->_queue) < $num) {
$num = 개수($this->_queue)
}
return array_slice($this->_queue, 0, $num)
}
/**
* 대기열 삭제
*/
함수 destroy()
{
$this->캐시->remove($this->queuecachename)
}
}
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.