分享

PHP开发APP接口(三):核心技术

 A芝兰之室 2017-10-13

1)静态缓存

保存在磁盘上的静态文件,用PHP生成数据放入静态文件中,以此减轻数据库的压力

1)PHP静态文件缓存类

<?php
class File {
    private $_dir;             // 默认路径
    const EXT = '.txt';         // 文件后缀名
    public function __construct() {
        // dirname() 当前文件目录
        $this->_dir = dirname(__FILE__) . '/files/';     //默认路径为当前文件下的files下
    }

    /**
     * [cacheData description]
     * @Author   ZJC
     * @DateTime 2017-02-15T10:31:38+0800
     * @param    [type]                   $key   [缓存文件文件名]
     * @param    string                   $value [缓存数据]
     * @param    string                   $path  [缓存路径]
     * @return   [type]                          [description]
     */
    public function cacheData($key, $value = '', $path = '') {
        $filename = $this->_dir . $path .$key . self::EXT;

        if ($value !== '') {    // 将value值写入缓存

            if(is_null($value)) {
                return @unlink($filename);
            }

            // 判断是否存在文件目录,如果不存在,则创建
            $dir = dirname($filename);
            if (!is_dir($dir)) {
                mkdir($dir, 0777);
            }

            // file_put_contents:将一个字符串写入文件
            // int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
            // $data部分最好为字符串形式,因为不支持多维数组;(序列化,JSON都可以)
            return file_put_contents($filename, json_encode($value));   // c成功返回字节数,失败返回FALSE

        }
        if(!is_file($filename)) {   // 显示缓存
            return FALSE;
        } else {
            return json_decode(file_get_contents($filename), true);
        }
    }
}
  • 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

2)调用方法

<?php 
    require_once('./file.php');
    $data = array(
        'id' => 1,
        'name' => 'singwa',
        'type' => array(4,5,6),
        'test' => array(1,45,67=>array(123, 'test')),
    );

    $file = new File();

    // 写入缓存
    if($file->cacheData('index_mk_cache', $data)) {
        // var_dump($file->cacheData('index_mk_cache'));exit;
        echo "success";
    } else {
        echo "error";
    }

    // 查看缓存
    if($file->cacheData('index_mk_cache')) {
        var_dump($file->cacheData('index_mk_cache'));exit;
        echo "success";
    } else {
        echo "error";
    }

    // 删除缓存
    if($file->cacheData('index_mk_cache', null)) {
        echo "success";
    } else {
        echo "error";
    }
  • 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

2)Memcache和Redis缓存技术

教程地址:https:///article-6719-1.htmlhttp://www.imooc.com/qadetail/119389

本人文章:http://www./visionz/redis-memcache/274193

    Memcache,Redis都需要安装才能使用;

1. Memcache和Redis都是用来管理数据的(一种缓存服务)
2. 他们数据都是存放在内存里的(获取速度快)
3. Redis可以定期将数据备份到磁盘(持久化)
4. Memcache只是简单的key/value缓存
5. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

如何操作数据

命令包括以下:

1. 开启redis客户端
2. 设置缓存值 - set index-mk-cache 数据
3. 获取缓存数据 - get index-mk-cache
4. 设置过期时间 - setex key 10 'cache'
5. 删除缓存 - del key
  • 1
  • 2
  • 3
  • 4
  • 5

php操作Redis

1. 按照phpredis扩展
2. php链接redis服务-connect(127.0.0.1, 6379)
3. set 设置缓存
4. get 获取缓存
  • 1
  • 2
  • 3
  • 4

设置 redis 缓存,文件地址:/var/www/app/setCache.php

$redis = new Redis();
$redis->connect('192.168.2.110', 6379);

// 设置缓存
// $redis->set('vision', 123);

// 设置定期缓存,15秒失效
$redis->setex('vision2', 15, 'heoolshdfksjfl');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

获取 redis 缓存,文件地址:/var/www/app/getCache.php

$redis = new Redis();
$redis->connect('192.168.2.110', 6379);

var_dump($redis->get('vision2'));
  • 1
  • 2
  • 3
  • 4

php操作Memcache

1. 安装memcache扩展
2. 链接服务-connect('memcache_host', 11211);
3. set 设置缓存
4. get 获取缓存
  • 1
  • 2
  • 3
  • 4

设置和获取 memcache 与 redis 相似,文件地址:/var/www/app/memcache.php

$memcache_obj = new Memcache;

/* connect to memcached server */
$memcache_obj->connect('127.0.0.1', 11211);

/*
设置'var_key'对应值,使用即时压缩
失效时间为50秒
*/
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 20);

echo $memcache_obj->get('var_key');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3)定时任务

学习要点

1. 掌握如何设置定时任务常用命令
2. 掌握如何定时运行PHP程序
  • 1
  • 2

定时任务命令

1. 定时任务服务提供crontab命令来设定服务
2. crontab -e    // 编辑某个用户的cron服务
3. crontab -l    // 列出某个用户cron服务的详细内容
4. crontab -r    // 删除某个用户的cron服务
  • 1
  • 2
  • 3
  • 4

crontab格式

分   小时    日     月  星期   命令
*      *     *      *    *      *
0-59  0-23  1-31   1-12  0-6   command

注:"*"代表取值范围内的数组
    "/"代表每、比如每分钟等

*/1 * * * * /usr/bin/php /var/www/html/test.php
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多