分页: 10/12 第一页 上页 5 6 7 8 9 10 11 12 下页 最后页 [ 显示模式: 摘要 | 列表 ]
  我博客上的图片原来都存放在www.zyan.cc服务器上,由于该服务器不稳定,于是我将所有图片切换到了blog.zyan.cc服务器上,同时在MySQL数据库中,将字符串www.zyan.cc批量替换为blog.zyan.cc。为了方便以后使用,我将这条“将字符串aaa批量替换为bbb”的SQL语句记录在此:
引用
UPDATE 表名 SET 字段名 = REPLACE (字段名, 'aaa', 'bbb');
Tags:
  为了使多台服务器的安装配置方式统一,我写了一篇图文并茂的《针对服务器运行环境安装CentOS 4.X Linux》演示文档。

  在线版(FLASH):http://blog.zyan.cc/book/centos/

  下载版(PPS幻灯片,需安装 PowerPoint):http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=1976356

  

  什么是CentOS?

  2003年9月,红帽公司 (RedHat) 宣布不再推出个人使用的发行套件而专心发展收费的商业版本(RedHat Enterprise Linux)。CentOS是基于RedHat Enterprise Linux源代码重新编译,去除RedHat商标的产物,各种操作、使用和RedHat没有区别。CentOS完全免费,修正了RedHat的很多BUG,但CentOS不向用户提供技术支持,也不负任何商业责任。

  附1:CentOS 4.5 国内下载地址(ISO镜像)
  CD1下载:http://mirror.be10.com/centos/4.5/isos/i386/CentOS-4.5-i386-bin1of4.iso
  CD2下载:http://mirror.be10.com/centos/4.5/isos/i386/CentOS-4.5-i386-bin2of4.iso
  CD3下载:http://mirror.be10.com/centos/4.5/isos/i386/CentOS-4.5-i386-bin3of4.iso
  CD4下载:http://mirror.be10.com/centos/4.5/isos/i386/CentOS-4.5-i386-bin4of4.iso

  附2:自动编译安装Apache+PHP+MySQL的脚本
  http://blog.zyan.cc/read.php/200.htm
Tags: ,
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.07.24 转载请注明出处:http://blog.zyan.cc]

  新增的一组Apache服务器上线以来,我用netstat -an命令发现服务器中有大量状态为TIME-WAIT的TCP连接,于是用/sbin/sysctl -a查看了一下Linux的各项内核参数,并翻阅有关资料,决定修改其中的两项参数,以达到减少TCP连接中TIME-WAIT sockets的目的。

  vi /etc/sysctl.conf
  编辑/etc/sysctl.conf文件,增加三行:
引用
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

  说明:
  net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

  再执行以下命令,让修改结果立即生效:
  /sbin/sysctl -p

  用以下语句看了一下服务器的TCP状态:
  netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  返回结果如下:
  ESTABLISHED 1423
  FIN_WAIT1 1
  FIN_WAIT2 262
  SYN_SENT 1
  TIME_WAIT 962

  效果:处于TIME_WAIT状态的sockets从原来的10000多减少到1000左右。处于SYN_RECV等待处理状态的sockets为0,原来的为50~300。

  附:TCP状态变迁图,见我的另一篇文章《查看Apache并发请求数及其TCP连接状态
Tags: ,
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.02 转载请注明出处:http://blog.zyan.cc]

  Squid web缓存加速软件目前已经是新浪、搜狐、网易等各大网站广泛应用。Squid会在设置的缓存目录下建立多个目录,每一个目录下又建立多个目录,然后才在最里层的目录中存放缓存文件(object)。squid会根据用户请求网页的URL进行哈希,生成缓存文件,存放在某一个目录中。squid启动之后,将在内存中建立一个哈希表,记录硬盘中缓存文件配置的情形。

  对于类似http://you.video.sina.com.cn/index.html之类的网页,squid只会生成一个缓存文件。可以用squid附带的squidclient工具清除:
引用
squidclient -m PURGE -p 80 "http://you.video.sina.com.cn/index.html"


  而对于带有参数的网页,例如新浪播客的Flash播放器http://vhead.blog.sina.com.cn/player/outer_player.swf?auto=0&vid=4469852&uid=1278987704,因“?”后面的参数不同,导致URL也不同,squid会生成多个缓存文件,哈希分散存放在不同的目录。如果修改了这个outer_player.swf文件,要更新squid缓存就要去清除不同目录下及内存中的很多个缓存文件,十分麻烦,于是我编写了一个Linux下的shell脚本,去完成这件麻烦的事:

  脚本文件名:clear_squid_cache.sh(8月2日修正了UC网友“城市中的寂寞”反馈的BUG)
引用
#!/bin/sh
squidcache_path="/data1/squid/var/cache"
squidclient_path="/usr/local/squid/bin/squidclient"
grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt
for url in `cat cache_list.txt`; do
$squidclient_path -m PURGE -p 80 $url
done

  注意:请赋予clear_squid_cache.sh可执行权限(命令:chmod +x ./clear_squid_cache.sh)。请确保脚本所在目录可写。

  设置:
  squidcache_path= 表示squid缓存目录的路径
  squidclient_path= 表示squidclient程序所在的路径,默认为squid安装目录下的bin/squidclient

  用法:
  1、清除所有Flash缓存(扩展名.swf):
  ./clear_squid_cache.sh swf

  2、清除URL中包含sina.com.cn的所有缓存:
  ./clear_squid_cache.sh sina.com.cn

  3、清除文件名为zhangyan.jpg的所有缓存:
  ./clear_squid_cache.sh zhangyan.jpg

  效率:
  经测试,在DELL 2950上清除26000个缓存文件用时2分钟左右。平均每秒可清除缓存文件177个。
Tags: , ,
  [文章作者:张宴 本文版本:v1.1 最后修改:2007.07.27 转载请注明出处:http://blog.zyan.cc]

  这两天搭建了一组Apache服务器,每台服务器4G内存,采用的是prefork模式,一开始设置的连接数太少了,需要较长的时间去响应用户的请求,后来修改了一下Apache 2.0.59的配置文件httpd.conf:
引用
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers         10
MinSpareServers      10
MaxSpareServers      15
ServerLimit          2000
MaxClients           2000
MaxRequestsPerChild  10000



  查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
  Linux命令:
引用
ps -ef | grep httpd | wc -l

  返回结果示例:
  1388
  表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整,我这组服务器中每台的峰值曾达到过2002。


  查看Apache的并发请求数及其TCP连接状态:
  Linux命令:
引用
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  (这条语句是从技术总监王老大那儿获得的,非常不错)
  返回结果示例:
  LAST_ACK 5
  SYN_RECV 30
  ESTABLISHED 1597
  FIN_WAIT1 51
  FIN_WAIT2 504
  TIME_WAIT 1057
  其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。


  关于TCP状态的变迁,可以从下图形象地看出:
  点击在新窗口中浏览此图片  
  状态:描述
  CLOSED:无连接是活动的或正在进行
  LISTEN:服务器在等待进入呼叫
  SYN_RECV:一个连接请求已经到达,等待确认
  SYN_SENT:应用已经开始,打开一个连接
  ESTABLISHED:正常数据传输状态
  FIN_WAIT1:应用说它已经完成
  FIN_WAIT2:另一边已同意释放
  ITMED_WAIT:等待所有分组死掉
  CLOSING:两边同时尝试关闭
  TIME_WAIT:另一边已初始化一个释放
  LAST_ACK:等待所有分组死掉
Tags: , ,
  实现功能:当用户在本地客户端某目录内建立、修改、删除目录或文件、修改目录或文件的属性,只要执行相同的shell脚本,rsync就会自动找出有改动或删除的数据,将其传送到服务器上,使服务器端某目录内的数据跟本地客户端某目录内的数据保持一致。

  ★方式一:

  一、服务器端(例:10.0.0.1*):
  1、创建用户和组
Tags: , ,
  4月,我曾写过一篇文章《修改phpMyAdmin使其能够管理多台远程MySQL服务器》。今天架设sina播客测试环境时,再次用到phpMyAdmin管理远程数据库,于是干脆根据其最新版本V2.10.2做了一个可直接下载使用的、可管理多台远程MySQL服务器、同时支持Windows和Linux的phpMyAdmin 2.10.2。

  下载地址:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=1848024

  点击在新窗口中浏览此图片
Tags: , ,

  简介
  对于选择Linux 作为应用平台的的中小型企业或网站来说,往往面临如何实现数据远程备份或者网站镜象的问题,虽然有商业化的备份和镜象产品可供选择,但这些产品的价格往往过于昂贵。因此如何利用自由软件高效实现远程备份和网站镜象就成为一个值得讨论的话题。

  通过网络进行远程数据备份或者网站镜象的最简单的方法就是使用wget,但是这种方式每次都需要将所有数据都重新在网络上传输一遍,而不考虑哪些文件是经过更新的,因此效率非常低下。尤其在需要备份的数据量很大的时候,往往需要花费数个小时来在网络上进行数据传输。

  因此这里就介绍一种高效的网络远程备份和镜象工具-rsync,它可以满足绝大多数要求不是特别严格的备份需求。

Tags:
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.06.28 转载请注明出处:http://blog.zyan.cc]

  经济学中有一条著名的80-20定律,引用到编程中,就是:80%的性能瓶颈是由20%的代码引起的。借助PHP的XDebug扩展,可以有效地找出这20%的代码。

  一、安装配置
  1、下载PHP的XDebug扩展,网址:http://xdebug.org/

  2、在Linux下编译安装XDebug
引用
tar -xzf xdebug-2.0.0RC3.gz
cd xdebug-2.0.0RC3
/usr/local/php/bin/phpize
./configure --enable-xdebug
cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/

  注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/不同的PHP版本路径不同,也不一定要放在该路径,可以在zend_extension_ts中自行指定xdebug.so所在位置。
Tags: ,
  上周,我重写了一个视频接口程序,这周准备写个测试用例文档,按照该文档对该程序进行测试。测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

  关于测试用例的设计,我在网上找到了一组不错的文章,贴上链接:

  一、测试用例设计白皮书--测试用例基本概念

  二、测试用例设计白皮书--等价类划分方法

  三、测试用例设计白皮书--边界值分析方法

  四、测试用例设计白皮书--错误推测方法

  五、测试用例设计白皮书--因果图方法

  六、测试用例设计白皮书--判定表驱动分析方法

  七、测试用例设计白皮书--正交实验设计方法

  八、测试用例设计白皮书--功能图分析方法

  九、测试用例设计白皮书--场景设计方发

  十、测试用例设计白皮书--测试用例设计综合策略
  今天在PHP4环境下重新写一个接口程序,需要大量分析解析XML,PHP的xml_parse_into_struct()函数不能直接生成便于使用的数组,而SimpleXML扩展在PHP5中才支持,于是逛逛搜索引擎,在老外的网站上找到了一个不错的PHP XML操作类。

一、用法举例:
1、将XML文件解释成便于使用的数组:

  PHP中的字符串操作功能是比较多的,重要的有以下这些:

  (1)echo,print,printf,sprintf
  前两个函数是输出字符串.字符串中如果有变量名则被替换成其值. 后两个函数类似于C的同名函数.
  昨天,校党委宣传部的W老师打电话向我寻求帮助,说中南民大论坛MySQL数据库发生故障,他们试图用5月7日的数据库备份去恢复,但没有成功。我晚上回宿舍后,登录到民大论坛服务器上一看,原来是论坛MySQL数据库的一张MySQL表损坏。根据我的经验,成功修复MySQL损坏表的概率是90%,根本没有必要急着去用旧的数据库备份去恢复,何况备份又不及时,5月7日到发生故障的5月22日,意味着要丢失15天的数据啊。

  我修复了5月22日的数据库,故障发生之前的数据没有丢失。方法很简单,四步即可搞定。

  ①、用root帐号从命令行登录MySQL:
  mysql -u root -p

  ②、输入root帐号的密码。

  ③、选定数据库名(本例中的数据库名为studentmis):
  use studentmis;

  ④、修复损坏的表(本例中要修复的表为smis_user_student):
  repair table smis_user_student;
Tags: ,
  今天下载了一款国外的PHP编辑器----《PHP Designer 2007 专业版》,用了后感觉非常不错,拥有PHP, Javascript, Smarty, Perl, C#, HTML, XHTML, CSS and SQL (Ingres, Interbase, MSSQL, MySQL, Oracle, Sybase and Standard SQL) 等程序语言的函数库,支持代码高亮显示,功能包括自动完成、代码库、TODO管理、FTP支持、任务管理、扩展工具、代码调试、自定义标记、帮助文件搜索等。

  下载地址:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=1539036

  点击在新窗口中浏览此图片
Tags:
  这两天发现一个老外用JavaScript编写的好东西:dp.SyntaxHighlighter。它可以在网页中对各种程序源代码语法进行加亮显示。支持当前流行的各种编程语言:C#、CSS、C++、Delphi、Java、JavaScript、PHP、Python、Ruby、SQL、Visual Basic、XML / HTML

  下载地址:http://www.dreamprojections.com/syntaxhighlighter/
  演示地址:http://www.dreamprojections.com/syntaxhighlighter/Tests/PHP.html

  使用方法:
  1、假设网页文件test.htm存放在一个目录,则将dp.SyntaxHighlighter解压缩到该目录下的子目录,假设为images
  2、在网页的<head></head>之间插入以下代码:
Tags: ,
分页: 10/12 第一页 上页 5 6 7 8 9 10 11 12 下页 最后页 [ 显示模式: 摘要 | 列表 ]