php教程 PHP源码 提高Web应用程序的性能以及memcached

提高Web应用程序的性能以及memcached

May 25, 2016 pm 04:59 PM

跳至

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

当我们想到存储在Web应用程序中,我们首先想到的通常是一个传统的数据库MySQL。这是伟大的长期存储和数据分析,但有许多短期需要一个更好的选择:memcached。这是页面请求和提高性能之间的信息存储位一个不错的选择。本文介绍我们会告诉你如何开始使用memcached PHP。

 

介绍

 

memcached是一个简单的界面让你店里的东西在存储服务器。这可以在同一台机器上运行作为Web服务器的可扩展性,但来自分布在多个服务器实例。所有你需要的是Memcached在后台运行,PHP提供了一个简单的界面和一个PECL的图书馆。基于Debian的Linux系统,这很容易:

 

    $ sudo apt-get install memcached

    $ sudo service memcached start

    $ sudo pecl install memcached

    $ sudo service httpd restart

 

复制代码

 

 

现在我们要提到有技术上的两个PHP库使用memcached。老图书馆被称为“set”和缺乏某些功能。新的“缓存”图书馆使用libmemcached和一般是首选。

PHP中的第一步是连接到服务器。连接可以持续跨越的要求,这是很好的性能。然后添加到服务器列表的需要。在这种情况下,我们将使用一个本地运行实例的默认端口:

 

    function get_memcached() {

        // Set a persistent connection ID

        $mc = new Memcached('webapp');

        // Set a short timeout (in milliseconds) so if the server goes down

        // it doesn't take down our site with it

        $mc->setOption(Memcached::OPT_CONNECT_TIMEOUT, 1000);

        if ( !$mc->getServerList() ) {

            if ( !$mc->addServer('localhost', 11211) ) {

                error_log('Could not add memcached server.');

                return false;

            }

        }

        return $mc;

    }

 

复制代码

 

 

现在你可以读写PHP变量与基于密钥的memcached你定义简单的功能。他们将序列化和反序列化,自动。你可以不喜欢写数据库连接或结果集的资源,但你可以将这些结果集阵列和存储这些。

 

数据存储

 

让我们说我们想存储列表的最近访问的URL的每个登录的用户。我们可以使用会话,但不工作的设备和它会尽快清除会话是消失。我们可以使用一个数据库,但这种数据的最可能我们的系统没有临界慢。使用memcached是容易的:

 

    $user_id = 123;  // The current user's ID复制代码

 

缓存

 

现在让我们通过缓存数据库结果真正提高您的Web应用程序。数据库查询通常是在服务器处理的最大瓶颈,从而避免重复查询在内存中缓存的结果可以提供巨大的性能增益。最简单的方法是查询只和主键的商店。通常最好是缓存的值被删除时,数据库的记录被更新,用户不会看到任何过时的价值观。

 

    function store_product($id, $name, $price) {

        // Create or update the product in the database

        $db = get_db();

        $qry = $db->prepare('REPLACE INTO product (id, name, price) VALUES (:id, :name, :price)');

        $qry->bindParam(':id', $id);

        $qry->bindParam(':name', $name);

        $qry->bindParam(':price', $price);

        $qry->execute();复制代码

 

 

 

注意事项

 

    与任何技术选择有局限性和注意事项:

    一个关键的最大长度是250个字节。把你的钥匙简短。

    默认的最大值的大小为1MB。这不是正确的地方来存储大的值。

    仓储不是锁定阅读或在数据库中的记录可以被锁定的写作方式。要知道,任何Web请求可以在任何时间更新任何价值。

    确保您有足够的RAM memcached服务器合并。

 

 

下一步

 

    你能越做memcached:

    缓存的值可以超时。这是有用的数据时,应该被缓存一段时间而不是手工删除。

    简单的递增和递减的方法有利于保持快速柜台之间的请求。

 

memcached配置正确,你可以分享许多编程语言编写的应用程序之间的数据。

给memcached一试。在合适的情况下这是一个非常简单而有效的最大化你的Web应用程序性能的解决方案。

로그인 후 복사

                   

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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