用PHP写的基于Memcache的Queue实现代码_php技巧
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);//取出一定数量的数据

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

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

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

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

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

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

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