php中内存缓存memcached实例
windows下的memcache安装:
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:memcached
2. 在终端(也即cmd命令界面)下输入 ‘c:memcachedmemcached.exe -d install
’ 安装
3. 再输入: ‘c:memcachedmemcached.exe -d start’ 启动。note: 以后
memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完
毕了。
4.下载http://cmy2009.ihost.tw/download,(php_memcache地址)请自己查找对应的
php版本的文件
5. 在c:winntphp.ini 加入一行 ‘extension=php_memcache.dll’
6.重新启动apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
memcached的基本设置:
-p 监听的端口
-l 连接的ip地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位mb。默认64mb
-m 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
memcache环境测试:
运行下面的php文件,如果有输出,就表示环境搭建成功。开始领略memcache的魅力把
!
代码如下 | 复制代码 |
<?php $memcache = memcache_connect('localhost', 11211); if ($memcache) { $object = new stdclass; $array = array('assoc'=>123, 345, 567); var_dump($memcache->get('str_key')); |
为什么不使用数据库做这些?
暂且不考虑使用什么样的数据库(ms-sql, oracle, postgres, mysql教程-innodb, etc..), 实现事务(acid,atomicity, consistency, isolation, and durability )需要大量开销,特别当使用到硬盘的时候,这就意味着查询可能会阻塞。当使用不包含事务的数据库(例如mysql-myisam ),上面的开销不存在,但读线程又可能会被写线程阻塞。
memcached从不阻塞,速度非常快。
/**
* 说明,该类适用于小型的网站的数据库备份,内置mysql连接,只需要简单配置数据连接
* 及存贮备份的位置即可。
* 类实列化并且连接数据库以后可执行以下操作
* get_db_table($database) 取得所有数据表
* export_sql($table,$subsection=0)) 生成sql文件,注意生成sql文件只保存到服务器目录,不提供下载
* import_sql($dir) 恢复数据只导入服务器目录下的sql文件
* 该类制作简单,可任意传播,如何您对该类有什么提议,请发送邮件给小虾
* @author 赵红健[游天小虾]
* email:328742379@qq.com
* qq交流群:69574955 聚义堂-网页制作交
*/
代码如下 | 复制代码 |
class data { /** /** $tabledom .= $create[1]."; "; $rows = mysql_query("select * from $table"); /** /** /** } |
应用方法
代码如下 | 复制代码 |
//$d = new data(); //连接数据库 //查找数据库内所有数据表 //备份并生成sql文件 //恢复导入sql文件夹 |
本程序包括三个文件
reg.html 用户注册html页面
reg.php php处理代码
conn.php 数据库教程连接文件
reg.html代码
代码如下 | 复制代码 |
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> function checkname(){ |
reg.php文件
代码如下 | 复制代码 |
include("conn.php"); if(strlen($name)>0){ |
conn.php数据库文件
代码如下 | 复制代码 |
<?php /* created on 下午12:08:25*/ $conn=@mysql_connect("localhost","root","")or die("111cn.net提示你:连接失败!"); mysql_select_db("reg",$conn); mysql_query("set names 'gbk'"); ?> |
registration数据表结构
-- phpmyadmin sql dump
-- version 2.11.2.1
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2009 年 05 月 20 日 05:29
-- 服务器版本: 5.0.45
-- php 版本: 5.2.5
set sql_mode="no_auto_value_on_zero";
--
-- 数据库: `reg`
--
-- --------------------------------------------------------
--
-- 表的结构 `registration` phpmyadmin导入数据
--
代码如下 | 复制代码 |
create table `registration` ( -- |
-- 导出表中的数据 `registration`
--
代码如下 | 复制代码 |
insert into `registration` (`id`, `username`, `userpwd`) values |
$login = "root";
$passwd = "mysql教程";
try{
$db=new pdo('mysql:host=localhost;dbname=mysql',$login,$passwd);
foreach($db->query('select * from test') as $row){
print_r($row);
}
$db=null;
}catch(pdoexception $e){
echo $e->getmessage();
}
看一个高级一点的
$dbms='mysql'; //数据库类型 oracle 用odi,对于开发者来说,使用不同的数据库,只要改这个,不用记住那么多的函数了
$host='localhost'; //数据库主机名
$dbname='test'; //使用的数据库
$user='root'; //数据库连接用户名
$pass=''; //对应的密码
$dsn="$dbms:host=$host;dbname=$dbname";
class db extends pdo {
public function __construct(){
try {
parent::__construct("$globals[dsn]", $globals['user'], $globals['pass']);
} catch (pdoexception $e) {
die("error: " . $e->__tostring() . "<br/>");
}
}
public final function query($sql){
try {
return parent::query($this->setstring($sql));
}catch (pdoexception $e){
die("error: " . $e->__tostring() . "<br/>");
}
}
private final function setstring($sql){
echo "我要处理一下$sql";
return $sql; }}
$db=new db();
$db->setattribute(pdo::attr_case, pdo::case_upper);
foreach ($db->query('select * from xxxx_menu') as $row) {
print_r($row);
}
$db->exec('delete from `xxxx_menu` where mid=43');
/*
关于pdo说明
pod(php data object)扩展在php5中加入,php6中将默认识用pdo连接数据库,所有非pdo扩展将会在php6被从扩展中移除。该扩展提供php内置类 pdo来对数据库进行访问,不同数据库使用相同的方法名,解决数据库连接不统一的问题。
我是配置在windows下做开发用的。
■pdo的目标
提供一种轻型、清晰、方便的 api
统一各种不同 rdbms 库的共有特性,但不排除更高级的特性。
通过 php 脚本提供可选的较大程度的抽象/兼容性。
■pdo的特点:
性能。pdo 从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为 pdo 的代码是全新的,所以我们有机会重新开始设计性能,以利用 php 5 的最新特性。
能力。pdo 旨在将常见的数据库功能作为基础提供,同时提供对于 rdbms 独特功能的方便访问。
简单。pdo 旨在使您能够轻松使用数据库。api 不会强行介入您的代码,同时会清楚地表明每个函数调用的过程。
运行时可扩展。pdo 扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个 php 程序。例如,pdo_oci 扩展会替代 pdo 扩展实现 oracle 数据库 api。还有一些用于 mysql、postgresql、odbc 和 firebird 的驱动程序,更多的驱动程序尚在开发。
*/
代码如下 | 复制代码 |
class cls_mysql{ var $dbhost; var $goneaway = 5; function connect($dbhost, $dbuser, $dbpw, $dbname = '', $dbcharset = '', $pconnect = 0, $tablepre='', $time = 0) { if($pconnect) { if($this->version() > '4.1') { if($this->version() > '5.0.1') { if($dbname) { } function fetch_array($query, $result_type = mysql_assoc) { function result_first($sql) { function fetch_first($sql) { function fetch_all($sql, $id = '') { function cache_gc() { function query($sql, $type = '', $cachetime = false) { function affected_rows() { function error() { function errno() { function result($query, $row) { function num_rows($query) { function num_fields($query) { function free_result($query) { function insert_id() { function fetch_row($query) { function fetch_fields($query) { function version() { function close() { function halt($message = '', $sql = '') { |
相关文章
- 这篇文章主要介绍了浅谈redis key值内存消耗以及性能影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-07
- 这篇文章主要介绍了详解分析MySQL8.0的内存消耗,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下...2021-03-23
PHP分布式框架如何使用Memcache同步SESSION教程
本教程主要讲解PHP项目如何用实现memcache分布式,配置使用memcache存储session数据,以及memcache的SESSION数据如何同步。 至于Memcache的安装配置,我们就不讲了,以前...2016-11-25- 这篇文章主要介绍了解决使用OpenCV中的imread()内存报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 今天小编就为大家分享一篇解决tensorflow训练时内存持续增加并占满的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-22
- memche消息队列的原理就是在key上做文章,用以做一个连续的数字加上前缀记录序列化以后消息或者日志。然后通过定时程序将内容落地到文件或者数据库。php实现消息队列的用处比如在做发送邮件时发送大量邮件很费时间的问...2014-05-31
- 这篇文章介绍了C#操作内存读写方法的主要实现代码,下面让我们来看看具体的实例实现,有需要的朋友可以参考一下...2020-06-25
- 在本篇文章里小编给大家整理了关于C#托管内存与非托管内存之间的转换的实例以及相关知识点,需要的朋友们学习下。...2020-06-25
- 这篇文章主要介绍了c# 通过内存映射实现文件共享内存的示例代码,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...2021-04-24
- 这篇文章主要介绍了Redis swap空间的使用示例,帮助大家更好的理解和学习使用Redis数据库,感兴趣的朋友可以了解下...2021-03-25
- 这篇文章主要介绍了Android内存溢出及内存泄漏原因进行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-08-06
完美解决TensorFlow和Keras大数据量内存溢出的问题
这篇文章主要介绍了完美解决TensorFlow和Keras大数据量内存溢出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-04- 很多phper不知道如何在Windows下搭建Memcache的开发调试环境,最近个人也在研究Memcache,记录下自己安装搭建的过程。 ...2016-01-27
在Mac OS的PHP环境下安装配置MemCache的全过程解析
这篇文章主要介绍了在Mac OS的PHP环境下安装配置MemCache的全过程解析,MemCache是一套分布式的高速缓存系统,需要的朋友可以参考下...2016-02-18php memcache和php memcached比较以及问题
php memcache和php memcached是php的memcache分布式的高速缓存系统的两个客户端,php memcache是老客户端,php memcached是功能更加完善的新的代替php memcached的。...2016-11-25- 这篇文章主要介绍了Redis fork进程分配不到内存解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2021-01-15
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
这篇文章主要介绍了PHP中eAccelerator、memcached、xcache、APC 4个加速、缓存扩展的区别的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-07-25- 这篇文章主要介绍了java应用开发之JVM运行时内存,文中附含图文示例内容分析非常简要,有需要的朋友可以借鉴参考下,希望能够有所帮助...2021-09-16
- memcache的官方主页:php教程.net/package/memcache">http://pecl.php.net/package/memcache memcached的官方主页:http://pecl.php.net/package/memcached 以下是我安装...2016-11-25
- 代码如下 复制代码 <?php教程 class mycache { private $cache; function __construct() { $this->cache = new memcache();...2016-11-25