php教程 php手册 PHP扩展模块memcached长连接使用方法分析

PHP扩展模块memcached长连接使用方法分析

Jun 06, 2016 pm 08:15 PM
memcached 긴 연결

这篇文章主要介绍了PHP扩展模块memcached长连接使用方法分析,需要的朋友可以参考下

      网上广泛流传着一篇文章,讲述php的两个扩展模块memcache和memcached的区别,,其中特意强调了memcached与memcached一个很大的区别是memcached模块不支持长连接。以至于后来很多年我都认为memcached是不支持长连接的,其实不然,memcached扩展模块从很早的版本开始就已经支持长连接了。从扩展模块的源码注视中我们就能看到:

/* {{{ Memcached::__construct([string persistent_id[, callback on_new[, string connection_str]]]))

   Creates a Memcached object, optionally using persistent memcache connection */

static PHP_METHOD(Memcached, __construct)

{

从php的手册身上我们可以看到memcached的扩展模块提供的构造函数提供一个参数persistent_id可选项,手册中这样介绍:

      默认情况下,Memcached实例在请求结束后会被销毁。但可以在创建时通过persistent_id为每个实例指定唯一的ID, 在请求间共享实例。所有通过相同的persistent_id值创建的实例共享同一个连接。 

这个参数的含义就是说如果你传递了一个命名id给到构造方法,那么就会建立长连接,通常我们使用的都是PHP-FPM模式,这样PHP-FPM进程就会和memcached服务简历一条长连接通道。我们也可以理解为persistent_id就是一个连接池名字,所有php-fpm进程都是这个连接池中的一员。

     但我们需要注意的是php是解释性语言,当php第一次通过memached模块建立起长连接后,切记后续的php执行就不要再通过memcached的构造函数构建相同persistent_id命名的长连接,可以建立不同persistent_id名字的长连接,如果是相同的名字被php重复执行,一定会导致php-fpm的进程异常导致与memcached的通信越来越慢,同时根据libmemcached的版本不同还会导致php产生coredump。

    那么我们如何避免单个php-fpm在建立完以persistent_id命名的长连接后不再重复建立长连接呢?其实在PHP带有评注的手册上是有讲解的,内容如下:

When using persistent connections, it is important to not re-add servers.

This is what you do not want to do:

$mc = new Memcached('mc'); $mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); $mc->addServers(array( array('mc1.example.com',11211), array('mc2.example.com',11211), ));


Every time the page is loaded those servers will be appended to the list resulting in many simultaneous open connections to the same server. The addServer/addServers functions to not check for existing references to the specified servers.

A better approach is something like:

$mc = new Memcached('mc'); $mc->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true); if (!count($mc->getServerList())) { $mc->addServers(array( array('mc1.example.com',11211), array('mc2.example.com',11211), )); }

通过使用getServerList()方法来检查当前执行使用的php-fpm进程容器中是否已经存在相同名字的长连接资源,如果存在就不要重复使用addServers() 方法来新增长连接配置。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Memcached 캐싱 기술은 PHP의 세션 처리를 최적화합니다. Memcached 캐싱 기술은 PHP의 세션 처리를 최적화합니다. May 16, 2023 am 08:41 AM

Memcached는 웹 애플리케이션의 성능을 크게 향상시킬 수 있는 일반적으로 사용되는 캐싱 기술입니다. PHP에서 일반적으로 사용되는 세션 처리 방법은 세션 파일을 서버의 하드 디스크에 저장하는 것입니다. 그러나 이 방법은 서버의 하드 디스크가 성능 병목 현상 중 하나가 되기 때문에 최적이 아닙니다. Memcached 캐싱 기술을 사용하면 PHP에서 세션 처리를 최적화하고 웹 애플리케이션의 성능을 향상시킬 수 있습니다. PHP 세션

PHP8.0의 캐싱 라이브러리: Memcached PHP8.0의 캐싱 라이브러리: Memcached May 14, 2023 am 08:16 AM

PHP8.0의 캐싱 라이브러리: Memcached 인터넷의 급속한 발전으로 인해 최신 애플리케이션에는 성능을 향상하고 대용량 데이터를 처리하기 위해 효율적이고 안정적인 캐싱 기술이 필요합니다. PHP의 인기와 오픈 소스 특성으로 인해 PHP 캐싱 라이브러리는 웹 개발 커뮤니티에서 필수적인 도구가 되었습니다. Memcached는 수백만 개의 동시 연결된 캐시 요청을 처리할 수 있고 소셜 네트워크, 온라인 등 다양한 유형의 애플리케이션에서 사용할 수 있는 널리 사용되는 오픈 소스 고속 메모리 캐싱 시스템입니다.

Memcached 캐싱 기술을 사용하여 PHP 애플리케이션 CPU 사용량을 최적화하는 방법은 무엇입니까? Memcached 캐싱 기술을 사용하여 PHP 애플리케이션 CPU 사용량을 최적화하는 방법은 무엇입니까? Jun 21, 2023 pm 05:07 PM

인터넷이 발전하면서 PHP 애플리케이션은 인터넷 애플리케이션 분야에서 점점 더 보편화되었습니다. 그러나 PHP 애플리케이션의 동시 액세스가 높으면 서버의 CPU 사용량이 높아져 애플리케이션 성능에 영향을 줄 수 있습니다. PHP 애플리케이션의 성능을 최적화하기 위해서는 Memcached 캐싱 기술이 좋은 선택이 되었습니다. 이 기사에서는 Memcached 캐싱 기술을 사용하여 PHP 애플리케이션의 CPU 사용량을 최적화하는 방법을 소개합니다. Memcached 캐싱 기술 소개 Memcached는

PHP와 MySQL의 긴 연결과 지속적인 연결을 위한 Swoole과 Workerman의 최적화 방법 PHP와 MySQL의 긴 연결과 지속적인 연결을 위한 Swoole과 Workerman의 최적화 방법 Oct 15, 2023 pm 12:54 PM

PHP와 MySQL 간의 긴 연결과 지속적인 연결을 위한 Swoole과 Workerman의 최적화 방법에는 특정 코드 예제가 필요합니다. 웹 애플리케이션이 개발되고 사용자 규모가 증가함에 따라 데이터베이스 쿼리는 애플리케이션 성능 최적화의 초점 중 하나가 되었습니다. PHP 개발에서 일반적으로 사용되는 데이터베이스 연결 방법에는 긴 연결과 짧은 연결이 포함됩니다. 긴 연결은 데이터베이스 연결을 설정한 후 연결 상태를 유지하고 동일한 연결을 여러 번 재사용하는 것을 의미하고, 짧은 연결은 각 쿼리가 완료된 후 연결을 닫는 것을 의미합니다. PHP에서는 전통적인 My

PHP 및 Memcached 데이터베이스 백업 및 복구 PHP 및 Memcached 데이터베이스 백업 및 복구 May 15, 2023 pm 09:12 PM

인터넷의 급속한 발전으로 인해 대규모 MySQL 데이터베이스 백업 및 복구는 주요 기업과 웹사이트에 필요한 기술 중 하나가 되었습니다. Memcached가 널리 적용되면서 Memcached를 백업하고 복원하는 방법도 중요한 문제가 되었습니다. 웹 개발의 주요 언어 중 하나인 PHP는 MySQL 및 Memcached의 백업 및 복구를 처리하는 데 있어 고유한 장점과 기술을 가지고 있습니다. 이 기사에서는 PHP에서 MySQL을 처리하고 Memcached 백업 및 복구를 수행하는 방법을 자세히 소개합니다.

PHP 및 Memcached를 사용한 캐시 관리 PHP 및 Memcached를 사용한 캐시 관리 May 23, 2023 pm 02:21 PM

네트워크 애플리케이션의 지속적인 증가와 데이터 볼륨의 지속적인 확장으로 인해 데이터 읽기 및 쓰기 효율성은 애플리케이션 성능에 영향을 미치는 중요한 요소 중 하나가 되었습니다. 캐싱 기술을 적용하면 이 문제를 잘 해결할 수 있습니다. PHP 애플리케이션에서 Memcached는 가장 일반적으로 사용되는 캐시 서버입니다. Memcached는 일반적으로 사용되는 데이터를 메모리에 저장하고 데이터 검색 효율성을 향상시킬 수 있는 고성능 분산 메모리 개체 캐싱 시스템입니다. 이 기사에서는 캐시 관리를 위해 PHP와 Memcached를 사용하는 방법과 최적화 방법을 소개합니다.

Memcached 캐싱 기술을 사용하여 PHP에서 오디오 및 비디오 재생 최적화 Memcached 캐싱 기술을 사용하여 PHP에서 오디오 및 비디오 재생 최적화 May 17, 2023 pm 04:01 PM

인터넷 기술의 지속적인 발전으로 오디오 및 비디오 리소스는 인터넷상의 매우 중요한 콘텐츠 형태가 되었으며, 네트워크 개발에서 가장 널리 사용되는 언어 중 하나인 PHP는 비디오 분야에서도 지속적으로 사용되고 있습니다. 그리고 오디오 재생. 그러나 오디오 및 비디오 웹사이트의 사용자 수가 증가함에 따라 많은 웹사이트에서 문제를 발견했습니다. 높은 동시성 조건에서 PHP의 오디오 및 비디오 처리 속도가 크게 느려져 제 시간에 재생할 수 없거나 재생이 중단되는 등의 문제가 발생합니다. . 이 문제를 해결하려면 Memcached 캐싱 기술이 필요합니다.

PHP 및 Memcached 성능 모니터링 PHP 및 Memcached 성능 모니터링 May 15, 2023 pm 09:51 PM

현대 인터넷 애플리케이션의 급속한 발전으로 인해 사용자 경험은 애플리케이션의 성공에 매우 중요합니다. 애플리케이션의 고성능 및 고가용성을 보장하는 방법은 개발자가 해결해야 하는 중요한 문제 중 하나가 되었습니다. 널리 사용되는 프로그래밍 언어 중 하나인 PHP의 성능 모니터링 및 최적화도 매우 중요합니다. Memcached는 애플리케이션의 성능과 확장성을 향상시키는 데 도움이 되는 고성능 분산 메모리 개체 캐싱 시스템입니다. 이 기사에서는 PHP와 Memcached를 사용하여 성능 모니터링을 구현하는 방법을 소개합니다.

See all articles