백엔드 개발 PHP 튜토리얼 用PHP写的基于Memcache的Queue实现代码_php技巧

用PHP写的基于Memcache的Queue实现代码_php技巧

May 17, 2016 am 09:14 AM
memcache queue

php类代码:

复制代码 代码如下:

class MQ{
public static $client;
private static $m_real;
private static $m_front;
private static $m_data = array();
const QUEUE_MAX_NUM = 100000000;
const QUEUE_FRONT_KEY = '_queue_item_front';
const QUEUE_REAL_KEY = '_queue_item_real';
public static function setupMq($conf) {
self::$client = memcache_pconnect($conf);
self::$m_real = memcache_get(self::$client, self::QUEUE_REAL_KEY);
self::$m_front = memcache_get(self::$client, self::QUEUE_FRONT_KEY);
if (!isset(self::$m_real) || emptyempty(self::$m_real)) {
self::$real= 0;
}
if (!isset(self::$m_front) || emptyempty(self::$m_front)) {
self::$m_front = 0;
}
return self::$client;
}
public static function add($queue, $data) {
$result = false;
if (self::$m_real if (memcache_add(self::$client, $queue.self::$m_real, $data)) {
self::mqRealChange();
$result = true;
}
}
return $result;
}
public static function get($key, $count) {
$num = 0;
for ($i=self::$m_front;$i<:>if ($dataTmp = memcache_get(self::$client, $key.$i)) {
self::$m_data[] = $dataTmp;
memcache_delete(self::$client, $key.$i);
$num++;
}
}
if ($num>0) {
self::mqFrontChange($num);
}
return self::$m_data;
}
private static function mqRealChange() {
memcache_add(self::$client, self::QUEUE_REAL_KEY, 0);
self::$m_real = memcache_increment(self::$client, self::QUEUE_REAL_KEY, 1);
}
private static function mqFrontChange($num) {
memcache_add(self::$client, self::QUEUE_FRONT_KEY, 0);
self::$m_front = memcache_increment(self::$client, self::QUEUE_FRONT_KEY, $num);
}
public static function mflush($memcache_obj) {
memcache_flush($memcache_obj);
}
public static function Debug() {
echo 'real:'.self::$m_real."
/r/n";
echo 'front:'.self::$m_front."
/r/n";
echo 'wait for process data:'.intval(self::$m_real - self::$m_front);
echo "
/r/n";
echo '
'; <br>print_r(self::$m_data); <br>echo '<pre class="brush:php;toolbar:false">'; <br>} <br>} <br>define('FLUSH_MQ',0);//CLEAN ALL DATA <br>define('IS_ADD',0);//SET DATA <br>$mobj = MQ::setupMq('127.0.0.1','11211'); <br>if (FLUSH_MQ) { <br>MQ::mflush($mobj); <br>} else { <br>if (IS_ADD) { <br>MQ::add('user_sync', '1test'); <br>MQ::add('user_sync', '2test'); <br>MQ::add('user_sync', '3test'); <br>MQ::add('user_sync', '4test'); <br>MQ::add('user_sync', '5test'); <br>MQ::add('user_sync', '6test'); <br>} else { <br>MQ::get('user_sync', 10); <br>} <br>} <br>MQ::Debug(); <br>?> <br>
로그인 후 복사

使用方法
复制代码 代码如下:

MQ::setupMq('127.0.0.1','11211');//连接
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ::add($key, $value);//添加数据到队列
MQ:get($key, 10);//取出一定数量的数据
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Laravel 개발: Laravel Queue를 사용하여 비동기 작업을 처리하는 방법은 무엇입니까? Laravel 개발: Laravel Queue를 사용하여 비동기 작업을 처리하는 방법은 무엇입니까? Jun 13, 2023 pm 08:32 PM

애플리케이션이 더욱 복잡해짐에 따라 대량의 데이터와 프로세스를 처리하고 관리하는 것이 어려워졌습니다. 이러한 상황을 처리하기 위해 Laravel은 사용자에게 Laravel Queue(Queue)라는 매우 강력한 도구를 제공합니다. 이를 통해 개발자는 사용자 인터페이스에 영향을 주지 않고 백그라운드에서 이메일 보내기, PDF 생성, 이미지 자르기 처리 등과 같은 작업을 실행할 수 있습니다. 이번 글에서는 Laravel 큐를 사용하는 방법을 살펴보겠습니다. LaravelQueue 대기열이란 무엇입니까?

PHP 개발에 Memcache를 어떻게 사용하나요? PHP 개발에 Memcache를 어떻게 사용하나요? Nov 07, 2023 pm 12:49 PM

웹 개발에서는 웹사이트 성능과 응답 속도를 향상시키기 위해 캐싱 기술을 사용해야 하는 경우가 많습니다. Memcache는 모든 데이터 유형을 캐시할 수 있고 높은 동시성 및 고가용성을 지원하는 널리 사용되는 캐싱 기술입니다. 이 기사에서는 PHP 개발에 Memcache를 사용하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. Memcache 설치 Memcache를 사용하려면 먼저 서버에 Memcache 확장 프로그램을 설치해야 합니다. CentOS 운영 체제에서는 다음 명령을 사용할 수 있습니다.

멀티 스레드 환경의 Java Queue에 대한 보안 문제 및 해결 방법 멀티 스레드 환경의 Java Queue에 대한 보안 문제 및 해결 방법 Jan 13, 2024 pm 03:04 PM

다중 스레드 환경의 JavaQueue 대기열에 대한 보안 문제 및 솔루션 소개: 다중 스레드 프로그래밍에서 프로그램의 공유 리소스는 경쟁 조건에 직면할 수 있으며, 이는 데이터 불일치 또는 오류로 이어질 수 있습니다. Java에서 Queue는 일반적으로 사용되는 데이터 구조입니다. 여러 스레드가 동시에 Queue를 작동할 경우 보안 문제가 발생합니다. 이 기사에서는 멀티 스레드 환경에서 JavaQueue 대기열의 보안 문제를 논의하고 코드 예제 형식의 설명에 중점을 두고 여러 솔루션을 소개합니다. 하나

PHP 개발에서 효율적인 데이터 읽기 및 쓰기 작업을 위해 Memcache를 사용하는 방법은 무엇입니까? PHP 개발에서 효율적인 데이터 읽기 및 쓰기 작업을 위해 Memcache를 사용하는 방법은 무엇입니까? Nov 07, 2023 pm 03:48 PM

PHP 개발에서 Memcache 캐싱 시스템을 사용하면 데이터 읽기 및 쓰기 효율성을 크게 향상시킬 수 있습니다. Memcache는 데이터베이스를 자주 읽고 쓰지 않도록 메모리에 데이터를 캐시할 수 있는 메모리 기반 캐싱 시스템입니다. 이 기사에서는 효율적인 데이터 읽기 및 쓰기 작업을 위해 PHP에서 Memcache를 사용하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. Memcache 설치 및 구성 먼저 서버에 Memcache 확장 프로그램을 설치해야 합니다. 합격할 수 있다

PHP 개발에서 효율적인 데이터 쓰기 및 쿼리를 위해 Memcache를 사용하는 방법은 무엇입니까? PHP 개발에서 효율적인 데이터 쓰기 및 쿼리를 위해 Memcache를 사용하는 방법은 무엇입니까? Nov 07, 2023 pm 01:36 PM

PHP 개발에서 효율적인 데이터 쓰기 및 쿼리를 위해 Memcache를 사용하는 방법은 무엇입니까? 인터넷 애플리케이션의 지속적인 개발로 인해 시스템 성능에 대한 요구 사항이 점점 더 높아지고 있습니다. PHP 개발에서는 시스템 성능과 응답 속도를 향상시키기 위해 다양한 캐싱 기술을 사용하는 경우가 많습니다. 일반적으로 사용되는 캐싱 기술 중 하나는 Memcache입니다. Memcache는 데이터베이스 쿼리 결과, 페이지 조각, 세션 데이터 등을 캐시하는 데 사용할 수 있는 고성능 분산 메모리 객체 캐싱 시스템입니다. 데이터를 메모리에 저장함으로써

Java에서 대기열 적용 Java에서 대기열 적용 Feb 18, 2024 pm 03:52 PM

Java에서 큐의 사용법 Java에서 큐(queue)는 FIFO(선입선출) 원칙을 따르는 일반적으로 사용되는 데이터 구조입니다. 큐는 메시지 큐, 작업 스케줄링 및 기타 시나리오를 구현하는 데 사용할 수 있으며 데이터 배열 및 처리 순서를 잘 관리할 수 있습니다. 이 문서에서는 Queue의 사용법을 소개하고 구체적인 코드 예제를 제공합니다. Queue의 정의와 일반적인 메소드는 Java에 있습니다. Queue는 JavaCollectionsFramework의 인터페이스입니다.

Java Queue의 기본 개념 및 기본 동작 Java Queue의 기본 개념 및 기본 동작 Jan 13, 2024 pm 01:04 PM

JavaQueue의 기본 개념 및 동작 큐(Queue)는 FIFO(선입선출) 원칙에 따라 작동하는 공통 데이터 구조입니다. Java 프로그래밍에서는 Queue 인터페이스와 해당 구현 클래스를 사용하여 대기열 기능을 구현할 수 있습니다. 이 문서에서는 Queue의 기본 개념과 일반적인 작업을 소개하고 구체적인 코드 예제를 제공합니다. 1. 큐의 기본 개념 큐는 선형 데이터 구조로, enqueue와 deq라는 두 가지 기본 작업이 있습니다.

PHP의 Memcache 캐싱 기술을 활용한 데이터 상호작용 최적화에 대한 연습과 사고 PHP의 Memcache 캐싱 기술을 활용한 데이터 상호작용 최적화에 대한 연습과 사고 May 17, 2023 pm 09:51 PM

PHP에서 데이터 상호작용을 최적화하기 위한 Memcache 캐싱 기술의 실천과 생각 현대 웹 애플리케이션에서 데이터 상호작용은 매우 중요한 문제이며, 이는 충분히 효율적이지 않으며 웹 애플리케이션의 확장성과 성능을 제한합니다. 데이터 상호 작용 속도를 높이기 위해 우리의 일반적인 접근 방식은 데이터베이스 설계를 최적화하고 하드웨어 성능을 향상시키며 서버 용량을 늘리는 것입니다. 그러나 이러한 방법에는 모두 공통적인 한계가 있습니다. 즉, 시스템 비용이 증가합니다. 최근 몇 년 동안 Memcache 기술은 이 문제를 해결하는 데 진전을 이루었습니다.

See all articles