php程序员技术博客,关注PHP

专注于PHP技术

2011年12月26日,星期一

原创 scp备份公匙

1、scp在建立连接中是需要密码认证的,所以我们第一步就是添加ssh公匙。
ssh终端运行
ssh-keygen -t rsa
  结果如下
  Generating public/private rsa key pair.
  Enter file in which to save the key (/home/.username/ssh/id_rsa):#回车
  Enter passphrase (empty for no passphrase):#回车
  Enter same passphrase again:#回车
  Your identification has been saved in /home/.username /.ssh/id_rsa.
  Your public key has been saved in /home/.username /.ssh/id_rsa.pub.
  The key fingerprint is:
  38:25:c1:4d:5d:d3:89:bb:46:67:bf:52:af:c3:17:0c username@localhost
  Generating RSA keys:
  Key generation complete.
  会在用户目录~/.ssh/产生两个文件,id_rsa,id_rsa.pub
2.是把本地(10.1.1.1)主机上的id_rsa.pub文件拷贝到远程linux(10.1.1.2)主机的root用户主目录下的.ssh目录下,并且改名为authorized_keys
  即:
scp /root/.ssh/id_rsa.pub root@10.1.1.2:/root/.ssh/authorized_keys
  这样在本地linux(10.1.1.1)主机上使用scp命令复制文件到远程linux主机(10.1.1.2)上将不提示输入密码了,直接复制了。反之亦然!
(为了安全建议将authorized_keys属性变更为600)
3.创建一个sh文件 vi backup.sh
#!/bin/bash
cd /var/www/html/backup
#定义备份名字 bbs和home 设定每月备份一次 备份完就删除
BbsBakName=Bbs_$(date +”%Y%m%d”).tar.gz
#打包Ningyuan文件
tar [...]

阅读全文>

 标签: | 发布在 php | 没有评论 »


2011年11月16日,星期三

转载 在IBM开发者上看到一个 敏捷开发的小故事

举个例子,大家更好的理解敏捷是如何被实践的,我们说一说运用敏捷方法完成一次家庭出游计划:
这有一家四口人要出游了,首先敏捷规划,我们大致规划出我们去几天呢?要去什么地方? 一家几口人出行? 坐什么交通工具呢? 而还有个终极目标:那就是保证大家的绝对愉悦,增进家人感情和安全按时的返回。
大致目标规划好了就可以开展了,并且呢,我们将这次出行定为4天,第一天主要完成去的工作,第二三天在目的地玩耍,第四天返回。
在行程中了,我们虽然规划了大致方向,但是可能遇到堵车啦、修路啦等突发事件,于是我们必要情况下要选择其他路线,还有,你的stakeholder们可能有许多新点子,比如你的孩子希望在河边停下来看看风景啦,你的妻子希望在经过一座城市的时候进去那里的博物馆参观啦。总之、你的行程、事件、速度都可能被突发情况所影响。而随着调整的过程,仍然达到满足大家开开心心、安全按时返回的目标就对了。
最后,值得提醒,要合理安排休息时间,保证项目进展的可持续性。
这就是个很好运用敏捷的例子。

阅读全文>

  | 发布在 php | 没有评论 »


2011年11月14日,星期一

转载 Linux网站压力测试工具webbench

在一个网站上线前, 通常我们应该做一些相关的压力测试, 以便了解当前Web服务器在高并发高负载情况下的响应状况和速度,方便对Web服务器进行优化和重构。
目前有很多免费的web压力测试工具可以帮助我们完成测试, 例如: 十个免费的Web压力测试工具http://coolshell.cn/articles/2589.html,
但在真实项目中, 我还是喜欢用Apache ab 和Webbench来完成压力测试, Apache的ab使用非常简单, 而且只要是安装了Apache了,就会自带其ab工具, 但有个问题就是不能模拟高并发状态下的测试, 好像最多可以模拟100-200次/秒的并发. 如果需要模拟更高负载的压力测试, 可能我们就需要请Webbench来帮忙了, webbench最多可以模拟3万个并发连接.但唯一的缺点就是测试的结果太简单了.
好了, 首先我们先来安装webbench吧, 为了测试准确,请将 webbench 安装在别的linux服务器上, 因为webbench 做压力测试时,自身也会消耗CPU和内存资源, 否则, 很可能把自己服务器搞挂掉:).
首先,我们先下载并安装webbench吧
1.wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
2.tar zxvf webbench-1.5.tar.gz
3.cd webbench-1.5
4.make && make install
如果出现下面错误提示:
1.ctags *.c
2./bin/sh: ctags: command not found
可以使用yum安装ctags来解决这个问题
1.yum install ctags
或者自己手动安装
1.wget http://nchc.dl.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz
2.tar zxvf ctags-5.8.tar.gz
3../configure
4.make
5.make install
如果安装了ctags, 仍然报错:
1.install -s webbench /usr/local/bin
2.install -m 644 webbench.1 /usr/local/man/man1
3.install: cannot create regular file `/usr/local/man/man1′: No [...]

阅读全文>

 标签:,  | 发布在 php | 没有评论 »


2011年11月14日,星期一

转载 nohup命令详解

nohup命令详解 http://www.21andy.com/blog/20071121/677.html
使用nohup让程序永远后台运行
Unix/Linux下一般比如想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:
/usr/local/mysql/bin/mysqld_safe –user=mysql &但是加入我们很多程序并不象mysqld一样做成守护进程,可能我们的程序只是普通程序而已,一般这种程序使用 & 结尾,但是如果终端关闭,那么程序也会被关闭。但是为了能够后台运行,那么我们就可以使用nohup这个命令,比如我们有个test.php需要在后台运行,并且希望在后台能够定期运行,那么就使用nohup:
nohup /root/test.php &  提示:
  [~]$ appending output to nohup.out
  嗯,证明运行成功,同时把程序运行的输出信息放到当前目录的 nohup.out 文件中去。
  附:nohup命令参考
  nohup 命令
  用途:不挂断地运行命令。
  语法:nohup Command [ Arg ... ] [ & ]
   描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
   无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
  退出状态:该命令返回下列出口值:
  126 可以查找但不能调用 Command 参数指定的命令。
  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。
  否则,nohup [...]

阅读全文>

 标签: | 发布在 php | 没有评论 »


2011年11月14日,星期一

原创 centos5.5编译phpize安装pcntl模块

由于之前是使用yum安装php的,默认没有安装pcntl,于是参考网上资料,费了一番周折
终于安装好了
记录一下

php -v

看一下自己的php版本到www.php.net下载相应版本
解压后进入 php-(version)/ext/pcntl

phpize

生成configure编译文件

./configure –with-php-config=/usr/bin/php-config

结果提示
configure: error: no acceptable C compiler found in $PATH
原来是没有安装gcc

yum install gcc

./configure –with-php-config=/usr/bin/php-config
make && make install

出现类似如下提示说明编译成功了
“Installing shared extensions: /usr/bin/…”
修改配置文件

cd /etc/php.d
cp gd.ini pcntl.ini
vi pcntl.ini

将里面的 gd.so 替换成 pcntl.so保存
重载apache

service httpd reload

阅读全文>

 标签:,  | 发布在 php | 没有评论 »


2011年11月9日,星期三

原创 mysql随机记录条数查询的优化

一般的简单的获取随机几条数据的sql语句可能是这样

SELECT * FROM table WHERE 1 ORDER BY RAND() LIMIT N;

当数据库记录总数比较少的时候,这种方式还是不慢的,然而到一个级别后,比如10万
这个时候就非常的慢了,需要优化

SELECT a.* FROM TABLE AS a JOIN (SELECT MAX( id ) AS bid FROM TABLE) AS b ON (a.id >= FLOOR(b.bid*RAND())) WHERE 1 LIMIT N

从表中取出最大的id,RAND() 产生的是一个0到1.0的随机浮点数

阅读全文>

 标签:,  | 发布在 mysql, php | 没有评论 »


2011年11月8日,星期二

原创 单个文件夹限制存放1024个或者2000个文件实现原理

众所周知的原因
一个目录或者一个文件夹下面存放太多的文件,会导致系统缓慢
因此我们非常有必要限定一个文件夹或者一个目录里面文件的数量
当然每次去检查某个文件夹里面是否有1024或者2000个文件,是不现实的
这样会消耗很多资源而更加得不偿失
我们可以用一个文本来记录某个文件夹一个总共存放了多少个文件了
每增加一个文件,往记录文件里面写入一个字符的内容

$files_per_dir = 1024;
$count_file = ‘count_file.txt’;
$dir_path = ‘./’;

for($ii=0; $ii

阅读全文>

 标签:,  | 发布在 php | 没有评论 »


2011年11月8日,星期二

原创 纯php导出无乱码的mysql插入语句

鉴于原来的数据库使用latin1字段,而数据库默认是utf8
导致虽然浏览网页时显示正常,但在phpmyadmin中查看数据时显示乱码
于是计划将原来的编码latin1转换成utf8格式
步骤如下
1. 备份数据库
2.导出一份只有数据库表结构的sql,并将其中的默认编码改为 DEFAULT CHARSET=utf8
ex:

CREATE TABLE IF NOT EXISTS `wpphp_links` (
`link_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`link_url` varchar(255) NOT NULL DEFAULT ”,
`link_name` varchar(255) NOT NULL DEFAULT ”,
PRIMARY KEY (`link_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

3.使用php代码导出无乱码的sql语句
4.删除数据库表,执行第二步导出的sql建立数据库表
5.查看在phpmyadmin中的中文数据是否显示乱码
代码如下,可以在附件中下载 纯php导出无乱码sql (适用于数据量不大的导出,数据量大的话需要改进一下分记录导出)

set_time_limit(0);
$db_host = ‘localhost’;
$db_user = ‘root’;
$db_password = ”;
$db_name = ‘dayanmei’;

$back_sql_file = ‘dayanmei.sql’; [...]

阅读全文>

 标签:, ,  | 发布在 php | 没有评论 »


2011年11月6日,星期天

原创 用firefox获取淘宝首张大图

用firefox(俗称火狐) 安装firebug
打开淘宝的宝贝页
打开后获取到小图片地址
例如
http://img04.taobaocdn.com/bao/uploaded/i4/T15fKsXlJpXXajprDX_114338.jpg_40×40.jpg
那么大图片就是
http://img04.taobaocdn.com/bao/uploaded/i4/T15fKsXlJpXXajprDX_114338.jpg

阅读全文>

 标签:,  | 发布在 php | 没有评论 »


2011年11月3日,星期四

原创 php从大文件文本TEXT中读取某行的数据

function get_line($file,$line) {
$fp = fopen($file,’r');
$i = 0;
while(!feof($fp)) {
$i++;
$c = fgets($fp);
if($i==$line) {
echo $c;
break;
}
}
}

这个方式效率仍待考验
在一个apache的日志文件中(450M)
读取第20行非常之快 0.001039981842041
读取第200行0.0033199787139893
读取第2万行需要0.30908799171448 秒左右
读取第20万行2.5622429847717 seconds 已经到了无法忍受的地步

阅读全文>

  | 发布在 php | 没有评论 »


李立全
李立全
来自湖南-宁远,现就职于广东-广州,
职业PHP程序员,Q  Q1504-967,
MSNlee#dayanmei.com.

日志列表
个人链接
存档

    php程序员技术博客,关注PHP由 WordPress 驱动