分页: 3/4 第一页 上页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]
  我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,从Nginx的日志可以统计出,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量:

  服务器①:DELL PowerEdge 1950(两颗 Intel(R) Xeon(R) 双核CPU 5120 @ 1.86GHz,4GB内存)

  服务器②:DELL PowerEdge 1950(一颗 Intel(R) Xeon(R) 双核CPU 5140 @ 2.33GHz,4GB内存)

  Web服务器:CentOS Linux 4.4 + Nginx 0.5.35 + PHP 5.2.6RC2(300 FastCGI Procees, unix-domain socket, with XCache)

  PHP程序内容:大量Memcached读写、少量MySQL读操作、大量文件队列写操作,然后计算,生成供<script type="text/javascript" src="http://www.domain.com/abc.php?u=1"></script>方式调用的JS代码或XML数据。

  网卡流量:1.5M~3M/秒

  请求数统计方式:从Nginx访问日志中,统计每分钟的第15秒共有多少条日志记录。
引用
grep "25/Mar/2008:15:01:15" /data1/logs/nginx.log | wc -l


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

  服务器的系统负载也不算高:

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

  总结:
  1、Nginx的处理能力超强,这块不是瓶颈。影响动态程序处理能力的因素主要在于PHP(FastCGI)。PHP(FastCGI)模式适用于执行时间较短的PHP程序,一般复杂的PHP程序执行时间应该在100ms以内,例如我的博客首页执行时间为38ms左右。假设一个PHP程序的执行时间为100ms,那么一个PHP(FastCGI)进程每秒可以处理完毕10个请求,300个FastCGI进程理论上每秒可以处理3000个请求。但是,在生产环境下,还将受到内存、系统负载等多方面的影响,例如300个PHP(FastCGI)进程需要占用2.4GB左右的内存,每秒处理超过1000个请求时,系统负载会飚升到100以上。因此,FastCGI的进程不是越多越好,而是够用就好。

  2、使用PHP的XCache、APC等加速模块会提供速度10倍左右,降低系统负载50倍以上。

  3、修改了spawn-fcgi,使它能够支持250个以上的FastCGI进程。

  4、如果PHP直接对MySQL进行大量读写操作,速度是达不到“700 request/sec”的,PHP与MySQL之间需要一个中间层,这是关键的技术。

  5、CPU的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。

  6、使用PHP 5.2.6RC2,因为它修正了PHP 5.2.5的“zend_mm_heap corrupted”错误BUG。PHP 5.2.5(FastCGI)在高并发请求情况下,经常会出现该错误。

  7、有空我将写一篇针对CentOS Linux环境Nginx + PHP5(FastCGI)安装、配置的最新博文。
Tags: , , , , , ,
  前言:dbcached 1.0 beta* 在 Memcached 1.2.4 的基础上编写而成,也是我的第一个开源C项目。编写 dbcached 的目的是为了最大限度的发挥 Memcached 内存缓存的优势,便捷地维护 Memcached 服务器节点哈希列表,智能地支持 Memcached 故障转移,同时保证数据的持久化存储。

  dbcached

  协议:New BSD License
  作者:张宴
  网址:http://code.google.com/p/dbcached/

  dbcached 是什么?

  ● dbcached 是一款基于 Memcached 和 NMDB 的分布式 key-value 数据库内存缓存系统。

  ● dbcached = Memcached + 持久化存储管理器 + NMDB 客户端接口

  ● Memcached 是一款高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

  ● NMDB 是一款多协议网络数据库(dbm类)管理器,它由内存缓存和磁盘存储两部分构成,使用 QDBM 或 Berkeley DB 作为后端数据库。

  ● QDBM 是一个管理数据库的例程库,它参照 GDBM 为了下述三点而被开发:更高的处理速度,更小的数据库文件大小,和更简单的API。QDBM 读写速度比 Berkeley DB 要快,详细速度比较见《Report of Benchmark Test》。

  


  Memcached 和 dbcached 在功能上一样吗?

  ● 兼容:Memcached 能做的,dbcached 都能做。除此之外,dbcached 还将“Memcached、持久化存储管理器、NMDB 客户端接口”在一个程序中结合起来,对任何原有 Memcached 客户端来讲,dbcached 仍旧是个 Memcached 内存对象缓存系统,但是,它的数据可以持久存储到本机或其它服务器上的 QDBM 或 Berkeley DB 数据库中。
  本文已有最新版本:

  请点击Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)




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

  前言:本文为我2007年9月写过的文章《Nginx 0.5.31 + PHP 5.2.4(FastCGI)搭建可承受3万以上并发连接数,胜过Apache 10倍的Web服务器》的第2版,经过了多台服务器的测试,修正了PHP iconv和gd库冲突的BUG,增加了PHP mcrypt、memcache扩展,修改了PHP和Nginx编译参数,优化了Nginx配置文件,添加了部分功能。

  Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

  Nginx 的中文维基:http://wiki.codemongers.com/NginxChs



  在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍

  根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。

  而这台 Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。

  在3万并发连接下,访问Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457(关于Nginx的监控页配置,会在本文接下来所给出的Nginx配置文件中写明):

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

  以下为 Nginx 0.5.33 + PHP 5.2.5 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程和64个php-cgi进程时的系统负载情况:

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



  安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 4.4)

  一、获取相关开源程序:
  1、下载程序源码包到当前目录:
  本文中提到的所有开源软件为截止到2007年11月25日的最新稳定版。我将它们打了两个压缩包。
Tags: , ,
  写了一个简单的发送HTML邮件的PHP函数。

  函数说明:send_mail("发件人地址", "收件人地址", "邮件主题", "邮件正文");

  示例:send_mail($from, "info@zyan.cc", "这是邮件的主题", "<html><head></head><body><p><font color=red>这是邮件正文</font></p></body></html>");

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

  最近遇到一个问题,Linux下的PHP命令行程序作为守护进程,需要从队列文件中读一行数据,通过TCP协议发送给外地的接收服务器,再读下一行数据,再发送。当本地与外地的网络状况不好时,有时候发送一条数据所耗费的时间就较长,累积起来容易造成队列堵塞和延迟。

  于是,我准备用该PHP命令行程序生成多个子进程,将串行处理变成并行处理。最简单的方法就是在PHP中用exec()或popen()函数将一个shell命令行推到后台去执行,例如:
<?php
exec("/bin/sh /opt/zhangyan.sh &");
?>
  最后的&表示将shell脚本推到后台去执行。

  但是这样会有一个问题,如果推到后台的进程太多,可能会导致服务器系统资源耗尽而崩溃,所以必须控制进程数量。



  我写了一个PHP程序(/opt/zhangyan.php)、一个shell程序(/opt/zhangyan.sh)作为测试用例。

  程序的逻辑:
  1、设置/opt/zhangyan.php最多允许生成500个子进程;
  2、当/opt/zhangyan.php读取到一条数据后,将允许生成的子进程数减1(空闲进程数$p_number=500-1=499),然后将数据交给/opt/zhangyan.sh去后台处理,不等待/opt/zhangyan.sh处理结束,继续读取下一条数据;
  3、当允许生成的子进程数减至0时(空闲进程数$p_number=0),/opt/zhangyan.php会等待1秒钟,然后检查后台还有多少个/opt/zhangyan.sh子进程尚未处理结束;
  4、如果1秒钟之后/opt/zhangyan.php发现后台的/opt/zhangyan.sh子进程数还是500(空闲进程数$p_number=0),会继续等待1秒钟,如此反复;
  5、如果/opt/zhangyan.php发现后台尚未处理结束的/opt/zhangyan.sh子进程数减少到300个了(空闲进程数$p_number=500-300=200),那么/opt/zhangyan.php会再往后台推送200个/opt/zhangyan.sh子进程;
Tags: ,
  本文已有最新版本:

  请点击Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)




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

  Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。

  Nginx 的中文维基:http://wiki.codemongers.com/NginxChs

  在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍

  以下是 Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 服务器在3万并发连接下的TCP状况:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  各种状态TCP连接数如下(各项值所代表的含义见我的另一篇文章《查看Apache并发请求数及其TCP连接状态》):
引用
LAST_ACK 1
SYN_RECV 991
CLOSE_WAIT 1
ESTABLISHED 18789
FIN_WAIT1 1478
FIN_WAIT2 181
TIME_WAIT 506

  根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。

  而这台 Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗100M内存(20MB*10=100M),开启的250个php-cgi进程消耗1G内存(4MB*250≈1GB),加上系统自身消耗的内存,总共才消耗2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才100M。在开启25个php-cgi进程的情况下,每分钟的处理能力只比开启250个php-cgi进程时低了不到一半。

  以下为 Nginx 0.5.31 + PHP 5.2.4 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程和250个php-cgi进程时的系统负载情况:
  点击在新窗口中浏览此图片


  安装步骤:
  (系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 4.4)

  一、获取相关开源程序:
  1、下载程序源码包到当前目录:
  本文中提到的所有开源软件为截止到2007年9月21日的最新稳定版。我将它们打了两个压缩包。
Tags: , , ,
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.21 转载请注明出处:http://blog.zyan.cc]

  我这两天在工作中遇到了一些问题,在今天下午全部解决,于是决定写一篇文章,将实现方法记录下来:

  一、背景环境:
  1、都是Linux服务器;
  2、“服务器A”与“服务器C”不在同一网络,两者之间是不通的;
  3、“服务器A”、“服务器C”分别与“服务器B”相通。

  二、要实现的需求:
  1、让“服务器A”上的PHP程序能够连接“服务器C”上的MySQL数据库(IP:10.10.1.4,端口:3306);
  2、不允许在“服务器A”上的PHP程序中更改MySQL地址(10.10.1.4)和MySQL端口(3306)。

  三、实现原理:
  理论上从“服务器A”是无法直接连接“服务器C”的IP地址(10.10.1.4)及其3306端口的【图中的虚线】,但通过“IP别名+TCP转发+端口映射”,我在“服务器A”上的PHP程序无须作任何修改的情况下实现了这项功能【图中的实线】。
  访问路线:“服务器A”上的PHP程序─→虚拟10.10.1.4:3306─→192.168.1.3:8520─→真实10.10.1.4:3306

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

  四、实现方法:
Tags: , ,
  [文章作者:张宴 本文版本:v1.1 最后修改:2007.08.23 转载请注明出处:http://blog.zyan.cc]

  最近在工作中遇到一个问题:a.php程序需要将接收到的数据同时写到“线上运行的正式数据库”和“进行开发调试的测试数据库”。而测试数据库可能经常会面临对表结构、字段、配置信息做调整等问题,很不稳定,发生错误的概率很高,如果用a.php程序同时写“正式数据库”和“测试数据库”,势必影响到线上运行的正式服务。

  于是,我想到用PHP curl扩展库将生成的$data数组post传递一份给b.php程序,然后a.php程序继续往下执行写“正式数据库”的代码。a.php程序将$data数组传递给b.php程序就完事了,至于b.php如何处理,就不关a.php的事了,b.php程序即使写“测试数据库”失败,也不会对a.php程序造成影响。

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

  按照这种思路,我写了a.php和b.php的代码:

  a.php程序源代码:
Tags:
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.15 转载请注明出处:http://blog.zyan.cc]

  当PHP截取中英文混合字符串时,最后一个汉字经常被拆成两半,例:截取字符串的前18个字
Tags:

我的技术文章与计算机作品汇总页
张宴(本页网址:http://blog.zyan.cc/tech/

文章推荐级别:最高点击在新窗口中浏览此图片  较高点击在新窗口中浏览此图片  普通点击在新窗口中浏览此图片

  Linux系统
    ★ Apache、Nginx及其他Web服务器
      ● [文章] Nginx虚拟主机多server_name的顺序问题 [作者:张宴]
      ● [文章] Nginx+PHP+MySQL双机互备、全自动切换方案 [作者:张宴]
      ● [文章] Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 使用Nginx轻松实现开源负载均衡──9月20日在ChinaUnix技术沙龙上的演讲PPT 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] Nginx 0.7.x + PHP 5.2.8(FastCGI)搭建胜过Apache十倍的Web服务器(第4版) 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 解决Nginx  + PHP(FastCGI)遇到的502 Bad Gateway错误 [作者:张宴]
      ● [文章] 使用Nginx作为Web服务器的国内网站 [作者:张宴]
      ● [文章] Nginx 0.6.31 + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第3版) 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 为Apache编译添加mod_expires模块出错的解决笔记 [作者:张宴]
      ● [文章] 解决“HTTP/1.1 405 Method not allowed”问题,让静态文件响应POST请求 [作者:张宴]
      ● [文章] Nginx + PHP5(FastCGI)生产环境跑PHP动态程序可超过“700次请求/秒” [作者:张宴]
      ● [文章] 视频:Nginx versus Apache (两者的对比)
      ● [文章] Nginx 0.5.33 + PHP 5.2.5(FastCGI)搭建胜过Apache 10倍的Web服务器(第2版) 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] Nginx 简单的负载均衡配置示例 [作者:张宴]
      ● [文章] Nginx 0.5.31 + PHP 5.2.4搭建可承受3万以上并发连接数,胜过Apache 10倍的Web服务器 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 为Apache配置mod_deflat压缩输出 [作者:张宴]
      ● [文章] 修改Linux内核参数,减少TCP连接中的TIME-WAIT sockets [作者:张宴]
      ● [文章] 查看Apache并发请求数及其TCP连接状态 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] AutoAPM--Linux下自动编译Apache+PHP+MySQL脚本 [作者:张宴]
      ● [文章] Linux下Apache日志分析工具--AWStats安装使用 [作者:张宴]

    ★ PHP配置与优化
      ● [文章] 利用Xdebug分析PHP程序,找出性能瓶颈 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 安装及配置eaccelerator-0.9.5加速PHP-5.2.1 [作者:张宴]
      ● [文章] Linux下为RPM方式安装的PHP添加GD库支持 [作者:张宴]

    ★ MySQL数据库
      ● [文章] 快捷启动、停止、重启、杀死指定端口MySQL进程的脚本 [作者:张宴]
      ● [文章] MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 使用Google的开源TCMalloc库,提高MySQL在高并发情况下的性能 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] MySQL数据库服务器在Flickr、Fotolog、Wkipedia、Facebook等国际知名网站中的使用数量 [作者:张宴]
      ● [文章] 命令行方式管理MySQL数据库实例 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] MySQL中将字符串aaa批量替换为bbb的SQL语句 [作者:张宴]
      ● [文章] phpMyAdmin之一:可管理多台远程MySQL服务器的phpMyAdmin 2.10.2 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] phpMyAdmin之二:修改phpMyAdmin使其能够管理多台远程MySQL服务器 [作者:张宴]
      ● [文章] MySQL数据库故障解决──修复损坏的表 [作者:张宴]

    ★ Squid、Varnish、Memcached及其他缓存服务器
      ● [文章] 百度、新浪、Mixi、Apache社区赞助的开源key-value分布式存储系统 [作者:张宴]
      ● [文章] Memcached的代理服务器软件:magent使用小记 [作者:张宴]
      ● [文章] 利用shell命令操作Memcached [作者:张宴]
      ● [文章] 利用Tokyo Tyrant构建兼容Memcached协议、支持故障转移、高并发的分布式key-value持久存储系统 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] MySQL Memcache_engine的安装与使用 [作者:张宴]
      ● [源码] dbcached──“分布式 key-value 数据库内存缓存系统” 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 减少Linux下Squid服务器的TIME_WAIT套接字数量 [作者:张宴]
      ● [文章] 使用Varnish代替Squid做网站缓存加速器的详细解决方案 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 找到一款批量清除Squid缓存的小工具 [作者:张宴]
      ● [文章] 初步试用Squid的替代产品──Varnish Cache网站加速器 [作者:张宴]
      ● [书籍] Squid中文权威指南 (在线版) (PDF下载) [作者:彭勇华]
      ● [文章] 清除指定squid缓存文件的脚本 点击在新窗口中浏览此图片 [作者:张宴]

    ★ 其他
      ● [文章] 我的开源PHP中文分词扩展:PHPCWS 1.0.0 点击在新窗口中浏览此图片 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 一款不错的Linux命令行下的FTP客户端软件 [作者:张宴]
      ● [文章] 亿级数据的高并发通用搜索引擎架构设计 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] Linux下简单限制网卡的带宽 [作者:张宴]
      ● [文章] 基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] IE浏览器下同一网页多图片显示的瓶颈与优化 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 又一个新浪UNIX开源软件项目──xbayDNS [项目团队:新浪研发中心──系统研发]
      ● [文章] 新浪发起的UNIX开源软件项目 [项目团队:新浪互动社区事业部──博客产品]
      ● [文章] YouTube 系统架构 [作者:Cuong Do & Kyle Cordes]
      ● [文章] 我所熟悉的网站负载均衡技术 [作者:张宴]
      ● [文章] Linux索引节点(inode)用满导致的一次故障 [作者:张宴]
      ● [文章] 一款不错的网站压力测试工具webbench [作者:张宴]
      ● [文章] IP别名+TCP转发+端口映射实现跨网络访问 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] Linux下快速搭建ntp时间同步服务器 [作者:张宴]
      ● [文章] Linux服务器监控系统 ServMon V1.1 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] Linux服务器监控系统 ServMon V1.0 [作者:张宴]
      ● [书籍] 针对服务器运行环境安装CentOS 4.X Linux 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 使用Linux的rsync命令实现:多服务器镜像同步 [作者:张宴]
      ● [文章] 用rsync实现网站镜像和备份
      ● [文章] Fedora Core 4.0 简体中文语言包的安装 [作者:张宴]

    ★ Linux命令与shell脚本
      ● [文章] PHPSH:Facebook开发的PHP Shell的安装与使用 [作者:张宴]
      ● [文章] PHP多进程并发控制的测试用例 点击在新窗口中浏览此图片 [作者:张宴]




  硬件设备
    ★ 负载均衡交换机
      ● [文章] 利用NetScaler和自行编写的健康检查脚本,完美解决多台MySQL Slave数据库的负载均衡 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] F5 BIG-IP负载均衡器配置实例与Web管理界面体验 点击在新窗口中浏览此图片 [作者:张宴]




  编程语言
    ★ PHP/JavaScript编程
      ● [文章] AJAXCDR:利用 Flash 完美解决 JavaScript 和 AJAX 跨域 HTTP POST/GET 表单请求 点击在新窗口中浏览此图片 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 支持MSNP15协议与离线消息的PHP MSN Class,可实现MSN机器人 [作者:张宴]
      ● [文章] 同一域名对应多个IP时,PHP获取远程网页内容的函数 [作者:张宴]
      ● [文章] 通过浏览器从SVN更新代码到Linux服务器的指定目录 [作者:张宴]
      ● [文章] 一个发送HTML邮件的PHP函数 [作者:张宴]
      ● [文章] 采用curl库在PHP程序之间传递数组 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] PHP截取中文字符串不出现?号的解决方法 [作者:张宴]
      ● [文章] PHP XML Library:一个不错的PHP XML操作类
      ● [文章] PHP中常用的字符串函数
      ● [文章] 钢笔手写体生成工具(PHP)V1.0 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] PHP实现http与https转化 [作者:张宴]
      ● [文章] 用GD库生成高质量的缩略图片
      ● [文章] 部分PHP问题总结

    ★ HTML/JS
      ● [文章] dp.SyntaxHighlighter介绍:在网页中加亮显示源代码的工具 [作者:张宴]
      ● [文章] IE浏览器flash控件的激活方式介绍 [作者:张宴]
      ● [文章] 防止电子邮件地址被搜索到的新方法 [作者:张宴]
      ● [文章] 网页制作:带有滚动条的表格 [作者:张宴]




  Windows 2000/XP/2003/Vista
    ★ 软件分享
      ● [下载] PHPChina.com旗下的开源技术杂志《PHPer》第12期
      ● [网站] UnixSNS──Linux/Unix技术工程师社交网络
      ● [网站] 一个分类搜集了众多开源软件官方网址的站点
      ● [下载] 一款不错的开源密码管理软件──KeePass
      ● [下载] PHP编程的好工具:《PHP Designer 2007 专业版》
      ● [下载] 可以上传、下载文件的SSH客户端软件--SecureCRT绿色版

    ★ 其他
      ● [文章] 再谈Dr.COM宽带认证客户端共享上网破解V3.46(d13) 点击在新窗口中浏览此图片 [作者:张宴]
      ● [文章] 软件测试用例(Test Case)设计 [作者:Vince]
      ● [文章] IE7浏览器简体中文版的安装、设置和使用方法(并介绍了非正版Windows用户如何安装IE7) [作者:张宴]
      ● [文章] 如何寻找联想电脑驱动程序 [作者:张宴]
      ● [文章] Microsoft SQL Server数据库的备份与恢复 [作者:张宴]
      ● [文章] 解决IE浏览器打不开的办法 [作者:张宴]




  个人计算机作品
    ★ 可下载或开放源代码的作品
      ● [软件] APMServ 拥有图形界面的快速搭建Apache、PHP、MySQL、ASP、Perl网站服务器平台的绿色软件 点击在新窗口中浏览此图片
       [作者:张宴]
      ● [软件] 《APMServ 5.2.6》:一键快速搭建Apache+PHP+MySQL+Nginx+Memcached+ASP平台的绿色软件 点击在新窗口中浏览此图片 [作者:张宴]
      ● [插件] MySQL中文全文索引插件 mysqlcft 1.0.0 点击在新窗口中浏览此图片 [作者:张宴]
      ● [源码] dbcached──“分布式 key-value 数据库内存缓存系统” 点击在新窗口中浏览此图片 [作者:张宴]
      ● [源码] Linux服务器监控系统 ServMon V1.1 点击在新窗口中浏览此图片 [作者:张宴]
      ● [源码] Linux服务器监控系统 ServMon V1.0 [作者:张宴]
      ● [书籍] 针对服务器运行环境安装CentOS 4.X Linux 图文幻灯电子书 点击在新窗口中浏览此图片 [作者:张宴]
      ● [源码] 钢笔手写体生成工具(PHP)V1.0 点击在新窗口中浏览此图片 [作者:张宴]
      ● 更多>>>

    ★ 只提供部分源代码和信息的作品
      ● [架构] 基于Sphinx+MySQL的千万级数据全文检索(搜索引擎)架构设计 点击在新窗口中浏览此图片 [作者:张宴]
      ● [作品] Linux服务器系统监控框架与MSN、E-mail、手机短信报警的实现 点击在新窗口中浏览此图片 [作者:张宴]
      ● [架构] 以最少的Web服务器达到最大的性能──“互联星空播客” 点击在新窗口中浏览此图片 [作者:张宴]
      ● [演示] 大学期间开发的中南民族大学学生管理信息系统 [作者:张宴]
      ● [演示] 大学期间为北京博卡先锋软件开发有限公司定制开发的SAPM软件 [作者:张宴]
      ● [硬件] 自行打造的袖珍电脑主机 [作者:张宴]
      ● 更多>>>

  本页内容将陆续增加修改。最后修改时间:2009年03月11日

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

  我一直习惯用phpMyAdmin对MySQL数据库进行管理,曾修改了一个《可管理多台远程MySQL服务器的phpMyAdmin 2.10.2》。但有些机器上因为安全等因素,只设置了允许从本机访问自身的MySQL端口,而且没有安装Apache和PHP,因而不能使用phpMyAdmin。于是,我只好使用命令行方式来对MySQL数据库进行管理。为了方便以后从命令行操作数据库可以更方便(拷贝、粘贴),我写下了这篇文章。

一、从命令行登录MySQL数据库服务器
1、登录使用默认3306端口的MySQL
/usr/local/mysql/bin/mysql -u root -p

2、通过TCP连接管理不同端口的多个MySQL(注意:MySQL4.1以上版本才有此项功能)
/usr/local/mysql/bin/mysql -u root -p --protocol=tcp --host=localhost --port=3307

3、通过socket套接字管理不同端口的多个MySQL
/usr/local/mysql/bin/mysql -u root -p --socket=/tmp/mysql3307.sock

4、通过端口和IP管理不同端口的多个MySQL
/usr/local/mysql/bin/mysql -u root -p -P 3306 -h 127.0.0.1



二、数据库操作SQL语句
1、显示服务器上当前存在什么数据库
SHOW DATABASES;

2、创建名称为rewin的数据库
CREATE DATABASE rewin;

3、删除名称为rewin的数据库
DROP DATABASE rewin;
Tags: , ,
  [文章作者:张宴 本文版本:v1.0 最后修改:2007.08.03 转载请注明出处:http://blog.zyan.cc]

  我管理服务器太多了,不可能每时每刻都登录到上面查看服务器状况,于是写了一个“服务器监控系统 ServMon V1.0”。其原理是用shell脚本定时抓取被监控服务器上信息,再用curl POST到监控机的PHP接口程序上,由PHP接口程序对信息进行分析,如果存在异常,则发送报警邮件给管理员。

  下午,ServMon V1.0 已经在sina播客服务器上部署,以下为ServMon的删节版内容,只监控磁盘分区使用率和Swap交换空间两项:

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

  1、被监控端服务器的shell脚本(Linux)
  (1)、发送磁盘分区使用率给监控端接口http://192.168.0.28/servmon/interface.php的脚本
引用
/usr/local/servmon/bin/diskstat_send
#!/bin/sh
LANG=zh_cn
disk=$(/bin/df -kP | grep / | awk -F ' ' ' {print $6":"$5}' | awk -F '%' ' {print $1}' | tr -s '\n' ';')
today=$(date -d "today" +"%Y-%m-%d_%H:%M:%S")
ip=$(/sbin/ifconfig | grep "inet addr" | grep -v "127.0.0.1" | awk '{print $2;}' | awk -F':' '{print $2;}' | tr -s '\n' ';')
/usr/bin/curl -d menu=diskstat -d password=$2 -d date=$today -d ip=$ip -d data=$disk $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: , ,
  [文章作者:张宴 本文版本: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: ,
  昨天,校党委宣传部的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: ,
分页: 3/4 第一页 上页 1 2 3 4 下页 最后页 [ 显示模式: 摘要 | 列表 ]