操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了一个Memcache数据缓存操作类库文件,希望对各位会有帮助了。
例子,代码如下
代码如下 |
复制代码 |
class memcachedInit {
private $memcache;
/**
* Memcache缓存-设置缓存
* 设置缓存key,value和缓存时间
* @param string $key KEY值
* @param string $value 值
* @param string $time 缓存时间
*/
public function set_cache($key, $value, $time = 0) {
return $this->memcache->set($key, $value, false, $time);
}
/**
* Memcache缓存-获取缓存
* 通过KEY获取缓存数据
* @param string $key KEY值
*/
public function get_cache($key) {
return $this->memcache->get($key);
}
/**
* Memcache缓存-清除一个缓存
* 从memcache中删除一条缓存
* @param string $key KEY值
*/
public function clear($key) {
return $this->memcache->delete($key);
}
/**
* Memcache缓存-清空所有缓存
* 不建议使用该功能
* @return
*/
public function clear_all() {
return $this->memcache->flush();
}
/**
* 字段自增-用于记数
* @param string $key KEY值
* @param int $step 新增的step值
*/
public function increment($key, $step = 1) {
return $this->memcache->increment($key, (int) $step);
}
/**
* 字段自减-用于记数
* @param string $key KEY值
* @param int $step 新增的step值
*/
public function decrement($key, $step = 1) {
return $this->memcache->decrement($key, (int) $step);
}
/**
* 关闭Memcache链接
*/
public function close() {
return $this->memcache->close();
}
/**
* 替换数据
* @param string $key 期望被替换的数据
* @param string $value 替换后的值
* @param int $time 时间值
* @param bool $flag 是否进行压缩
*/
public function replace($key, $value, $time = 0, $flag = false) {
return $this->memcache->replace($key, $value, false, $time);
}
/**
* 获取Memcache的版本号
*/
public function getVersion() {
return $this->memcache->getVersion();
}
/**
* 获取Memcache的状态数据
*/
public function getStats() {
return $this->memcache->getStats();
}
/**
* Memcache缓存-设置链接服务器
* 支持多MEMCACHE服务器
* 配置文件中配置Memcache缓存服务器:
* $InitPHP_conf['memcache'][0] = array('127.0.0.1', '11211');
* @param array $servers 服务器数组-array(array('127.0.0.1', '11211'))
*/
public function add_server($servers) {
$this->memcache = new Memcache;
if (!is_array($servers) || empty($servers)) exit('memcache server is null!');
foreach ($servers as $val) {
$this->memcache->addServer($val[0], $val[1]);
}
}
}
使用方法
$newclass = new memcachedInit();
$newclass->getVersion() //获取版本号
$newclass->close() //关闭Memcache链接
$newclass->clear($key) //从memcache中删除一条缓存
$newclass->get_cache($key) //通过KEY获取缓存数据
|
上面就简单介绍了它的使用方法了,其实还有很多在这里我就不介绍了呀。
总结,这个只是一个最基于的Memcache缓存操作类了,比起像数据库缓存类操作会更好更复杂了哦,希望例子能帮助到各位朋友哦。
利用php提交员工编号给mysql,然后由mysql把数据接受并利用delete进行数据删除操作了,下面我来给大家分享几个例子。
delete 语句的示例:
代码如下 |
复制代码 |
delete from friends where user_name = 'simaopig';
|
语法结构中,我们就可以看出,和 update 语法一样,我们是可以省略 where 子句的。不过这是一个很危险的行为。因为如果不指定 where 子句,delete 将删除表中所有的记录,而且是立即删除
1.删除指定编号的员工信息
代码如下 |
复制代码 |
<html>
<head>
</head>
<body>
<center>员工信息表</center>
<table border="1" align='center'>
<thead><tr><th>编号</th><th>姓名</th><th>年龄</th></tr></thead>
<tbody>
<?php
header("Content-type:text/html; charset=utf-8");
$_SESSION['arr']=array('1'=>array('name'=>'张三','age'=>18),'2'=>array('name'=>'李四','age'=>19),'3'=>array('name'=>'王五','age'=>20));
if(!empty($_POST['num'])){
unset($_SESSION['arr'][$_POST['num']]); //删除指定id的员工信息
}
if(isset($_SESSION['arr'])){
foreach ($_SESSION['arr'] as $k => $v) {
echo "<tr><td>".($k)."</td><td>".$v['name']."</td><td>".$v['age']."</td></tr>";
}
}
?>
</tbody>
</table>
<form method='post' action=""><br>
<center>
<b>输入员工编号:</b>
<input type="text" name="num" size='5'><br>
<input type='submit' value='删除' name='sub' class='btn'>
</center>
</form>
</body>
</html>
|
2.员工信息批量删除例子
关键技术
本实例的关键点是while()循环语句的灵活运用。根据提交的参数值,执行while()循环语句,在循环体重执行删除操作,完成数据的循环删除操作。
设计过程
(1)创建PHP脚本文件。首先,连接MySQL数据库服务器,连接MySQL中名称为db_while的数据库,并设置页面的编码格式。然后,定义循环变量变量$a和$b,将第1层while循环中的循环条件设置为$b<$a,然后,再次利用while语句循环输出数据表中的数据,并执行数据的删除操作,其代码如下:
代码如下 |
复制代码 |
<?php
if($_POST[sub]){ //通过POST方式获取参数
$conn=mysql_connect("localhost","root","111"); //连接mysql数据库
mysql_select_db("db_while",$conn); //连接数据库
mysql_query("SET NAMES GBK");//定义编码格式
$a=$_POST[te];//接收文本框参数
$b=0;//定义变量
while($b<$a){//while循环
$rs=mysql_query("select * from tb_while");//执行查询操作
while($rst=mysql_fetch_array($rs)){//将查询结果保存在数组中
$sql="delete * from tb_while where id=$b"; //sql语句
mysql_query($sql);//执行删除操作
echo"姓名为".$rst[name]."的员工已被删除<br>";//输出被删除的员工姓名
$b++
}
}
}
?>
|
(2)将该文件存储于MR266文件夹下,命名为index.php。
socket_connect函数在php默认安装是不给支持的,如果要使用它我们需要在php.ini中进行简单的开启,下面我们一起来看看吧。
linux系统中开启socket_connect方法
#cd /home/php/ext/sockets #/server/php/bin/phpize #./configure --prefix=/usr/local/php/lib --with-php-config=/server/php/bin/php-config --enable-sockets #make #make install
再修改/usr/local/php/etc/php.ini文件
#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/" (php5.4版本以上不用加扩展路径) extension=sockets.so
windows系统开启socket_connect步骤
直接修改php.ini 文件 去掉extension=PHP_sockets.dll 前面的分号
最后重启一下你的服务器环境就可以了,如iis apache nginx都可以正常使用socket_connect函数
socket_connect 说明
bool socket_connect ( resource $socket , string $address [, int $port = 0 ] )
成功时返回 TRUE, 或者在失败时返回 FALSE。
例子
代码如下 |
复制代码 |
<?php
$address = gethostbyname ($ip);
$command = "ping -c 1 " . $address;
$r = exec($command);
if ($r[0]=="r")
{
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
if ($socket < 0) {
echo "socket_create() failed: reason: " . socket_strerror ($socket) . "n";
} else {
echo "OK.n";
}
?>
|
今天碰到一个连接mysql的怪问题,我在php 环境本地用ip连接mysql响应快,用localhost连接慢,后来百度了一下整理了一些解决办法,大家一起来看看。
很长时间了,本地php环境,用localhost连接mysql时,只要访问有查询数据库的页面,就会发生响应慢的现象,找了些资料也没解决。
今天突然用ip连接了一下,发下速度竟然快了好多,朋友过来帮看了下。
检查了一下hosts文件,发现127.0.0.1没有解析到localhost,恍然大悟啊。
没有解析过去,响应速度当然慢了,它每次都要自己查找一遍。
第二种就是修改php.ini配置文件里的mysql.default_host,并且把mysql_connect()中的第一个参数写为空字符串;这个方法还没有测试成功过,可能是我把某些地方忽略了吧~~
远程连接MYSQL慢
出现这种问题的主要原因是,默认安装的MYSQL开启了DNS的反向解析,在my.ini(WINDOWS系统下)或MY.CNF(UNIX或LINUX系统下)文件的[mysqld]下加入skip-name-resolve这一句,保存。
开始--》运行--》cmd--》net stop mysql --》net start mysql--》哈哈,成功
my.ini所在路径如:D:\Program Files\MySQL\MySQL Server 5.0\my.ini
原来是MySQL的问题呀,这样操作后就不能在MySQL的授权表中使用主机名了而只能用ip。
下面来一个朋友写的php实现redis数据库指定库号迁移,希望例子能给各位带来帮助哦。
redis普通的数据库迁移,只能整个redis save,或者利用主从,当然也可以安装一个redis-dump,不过比较麻烦,这里提供一种php的脚本,实现指定库号的迁移,其实也就是遍历根据存储类型,读出来,插入新库;效果是这样:
代码如下 |
复制代码 |
[root@localhost ~]# php 1.php
1/407
101/407
201/407
301/407
401/407
|
上代码:
代码如下 |
复制代码 |
<?php
$from = '10.0.2.52:6379/7';
$to = '127.0.0.1:6379/7';
$from_redis = redis_init($from);
$to_redis = redis_init($to);
$keys = $from_redis->keys('*');
$count = 0;
$total = count($keys);
foreach($keys as $key){
if(++$count % 100 == 1){
echo "$count/$total\n";
}
$type = $from_redis->type($key);
switch($type){
case Redis::REDIS_STRING:
$val = $from_redis->get($key);
$to_redis->set($key, $val);
break;
case Redis::REDIS_LIST:
$list = $from_redis->lRange($key, 0, -1);
foreach($list as $val){
$to_redis->rPush($key, $val);
}
break;
case Redis::REDIS_HASH:
$hash = $from_redis->hGetAll($key);
$to_redis->hMSet($key, $hash);
break;
case Redis::REDIS_ZSET:
$zset = $from_redis->zRange($key, 0, -1, true);
foreach($zset as $val=>$score){
$to_redis->zAdd($key, $score, $val);
}
break;
}
}
function redis_init($conf){
$redis = new Redis();
preg_match('/^([^:]+)(:[0-9]+)?\\/(.+)?/', $conf, $ms);
$host = $ms[1];
$port = trim($ms[2], ':');
$db = $ms[3];
$redis->connect($host, $port);
$redis->select($db);
return $redis;
}
|
标签:[!--infotagslink--]