October 25, 2010
[教程]Linux下C语言对PHP扩展
"一,搭建php环境\n下载php 5.2.6 源码 并解压编译安装,搭建php环境\n二,创建扩展项目\n进入源码目录\ncd php5.2.6/ext/\n./ext_skel –extname=my_ext\n创建名字为my_ext的项目,最终会生成 my_ext.so\n三,更改配置和程序\n$ vi ext/my_ext/config.m4\n根据你自己的选择将\ndnl PHP_ARG_WITH(my_ext, for my_ext support,\ndnl Make sure that the comment is aligned:\ndnl [ –with-my_ext Include my_ext support])\n修改成\nPHP_ARG_WITH(my_ext, for my_ext support,\nMake sure that the comment is aligned:\n[ –with-my_ext Include my_ext support])\n或者将\ndnl PHP_ARG_ENABLE(my_ext, whether to enable my_ext support, …"
October 25, 2010
在Windows下写PHP的C扩展
"安装好如下软件:\nVC++ 6\nphp二进制环境\nCygwin.\nI. 下载php的源码包\n下载后php源码包解压后有个ext目录,这个目录就是负责开发扩展的目录,目录中有默认你扩展的所有源码。还有两个重要的文件:ext_skel , ext_skel_win32.php.\next_skel是创建扩展的shell,在windows上无法运行,所以就必须要有Cygwin。\nII. 建立php扩展骨架目录文件\n如果你的cygwin没有安装在c:\\cygwin,进入php源码包\\ext目录下,修改ext_skel_win32.php :\n$cygwin_path = ‘c:\\cygwin\\bin’;\n修改为你的cygwin目录\n$cygwin_path = ‘d:\\cygwin\\bin’;\n命令行方式进入ext目录然后运行:\nphp ext_skel_win32.php –extname=myhello\n(当然,为了保证上面的命令行能正常运行,首先你得确保你的php目录在系统的环境变量里)\n运行该命令后,有人发现下面的错误\nWarning: …"
October 25, 2010
指针 数字数组和字符数组首地址的输出
"#include #include\nint main() {\nchar *p;int *p1;\nint a[10]={1,2,3,4,5,6,7,8,9,0}; char str[]=”haohtmlcom”; p=str; p1=a;\nprintf( “%x” , p); /*输出的是地址*/ printf(“%s”,p); /*输出的是字符串haohtmlcom*/\nprintf(“%x”,p1); /*输出的是地址*/\nprintf(“%s”,p1); /*输出的是字符串,乱码*/\nsystem(“pause”);\n}\np,p1中存放的应为字符串,但在输出时还要兼顾前面的输出格式符的控制,如果是%s,则会将p的地址内的数据输出,而不再输出p本身的内容地址.\nprintf(“%c”, *p);//会输出字符串的第一个字母h\nprintf(“%d”, *p1);//会输出数组的第一个数字.\n所以 p,p1存放的都是地址,在用%c,%d时都能作为首地址输出第一个字母或数组元素,但是如果换用,%s,输出字符串,在一个地址空间内是不能存在字符串的,所以编译器会认为是连续空间内的字符串,所以 …"
October 22, 2010
nginx与lvs做负载均衡的比较
"lvs和nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。\n首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一个好习惯。\n下面来分析一下两者:\n一、lvs的优势:\n1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和cpu方面基本无消耗。\n2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。\n3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定 …"
October 20, 2010
linux 下的软件开发之GCC,GDB用法篇
"在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等。\n开放、自由和灵活是Linux的魅力所在,而这一点在GCC上的体现就是程序员通过它能够更好地控制整个编译过程。在使用GCC编译程序时,编译过程可以被细分为四个阶段:\n========================================\n◆ 预处理(Pre-Processing)\n◆ 编译(Compiling)\n◆ 汇编(Assembling)\n◆ 链接(Linking)\n========================================\nLinux程序员可以根据自己 …"
October 19, 2010
iptables命令
"详细教程参考: https://blog.haohtml.com/archives/13649\n语法\niptables [-t 要操作的表]\n\u0026lt;操作命令\u0026gt;\n[要操作的链]\n[规则号码]\n[匹配条件]\n[-j 匹配到以后的动作]\n操作命令(-A、-I、-D、-R、-P、-F)\n查看命令(-[vnx]L)\n如以下命令,其中-t filter为可选项,一般情况下省略不写:\niptables-t filter-AINPUT-j DROP\niptables命令参数\n-A 添加规则到规则链表 iptables -A INPUT\n-D 从规则链表中删除规则,可是完整规则,也可以是规则编号\n-R 取代现行规则,不改变在链中的顺序如:iptables -R INPUT 1 -s 193.168.0.1 -j DROP\n-I 插入一条规则 如:iptables -I INPUT 1 –dport 80 -j DROP\n-L 列出某规则链中所有规则\n-F 删除某规则链中所有规则\n-Z 将封包计数器清零\n-N 定义新的规则链\n-X 删除某个规则链\n-P 定义过滤政策\n-E 修改自定义规则链名字\n常 …"
October 19, 2010
LINUX下iptables的命令应用
"手册:\niptables命令 维护规则表的命令:\n(-N)创建一个新规则表\n(-X)删除一个空规则表\n(-P)改变内建规则表的默认策略\n(-L)列出规则表中的规则\n(-F)清空规则表中的规则\n(-Z)将规则表计数器清零\n管理规则表中的规则:\n(-A)添加新规则到规则表\n(-I)插入新规则到规则表的某个位置\n(-R)替换规则表中的规则\n(-D)删除规则表中的某条规则\n在调试iptables规则时,你也许需要反复修改你的脚本来实现某些特定的功能,这时建议在你的脚本里添加这样几行,以防止重复设置规则:\n# 清除所有规则\niptables -F -t filter\niptables -X -t filter\niptables -Z -t filter\niptables -F -t nat\niptables -X -t nat\niptables -Z -t nat\n# 设置内建规则表的默认策略 iptables -P INPUT ACCEPT\niptables -P OUTPUT ACCEPT\niptables -P FORWARD ACCEPT\niptables -t nat -P …"
October 19, 2010
Linux软链接和硬链接的区别
"一. 链接文件\n链接有两种方式,软链接和硬链接。\n1 软链接文件\n软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。 链接文件甚至可以链接不存在的文件,这就产生一般称之为”断链”的问题(或曰“现象”),链接文件甚至可以循环链接自己。类似于编程语言中的递归。 用ln -s 命令可以生成一个软连接,如下: [root@linux236 test]# ln -s source_file softlink_file 在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。 2 硬链接文件 info ln 命令告诉您,硬链接是已存在文件的另一个名字(A “hard link” is another name for an existing file),这多少有些令人困惑。硬连接的命令是 ln -d existfile newfile 硬链接文件有两个限制\n1)、不允许给目录创建硬链接; 2)、只有在同一文件系统中的文件之间才能创建链接。 对硬链接文件进行读写和删除操 …"
October 18, 2010
Nginx优化配置(转)
"这里主要讲的是Nginx的优化方法,同时还需要优化php-fpm配置,方法请参考:.\n优化前:\n优化后:\n看得出差距还是特别的大的.\n一般来说nginx配置文件中对优化比较有作用的为以下几项:\nworker_processes 8;\nnginx进程数,建议按照cpu数目来指定,一般为它的倍数,平时设置为2倍。\ncpu个数查看方法参考: 和 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。对worker_cu_affinity参数的优化参考:http://blog.haohtml.com/archives/14835worker_rlimit_nofile 102400;\n这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好 …"
October 18, 2010
[推荐]用include指令实现nginx多虚拟主机配置
"1.nginx.conf内容如下:\n程序代码\nworker_processes 1;\nerror_log /host/nginx/logs/error.log crit;\npid /host/nginx/logs/nginx.pid;\nevents {\n#使用的网络I/)模型,Linux系统推荐采用epoll模型,FreeBSD系统推荐采用kqueue模型\nuse epoll;\nworker_connections 64;\n}\nhttp {\ninclude /host/nginx/conf/mime.types;\ndefault_type application/octet-stream;\n#charset gb2312;\nserver_names_hash_bucket_size 128;\nclient_header_buffer_size 32k;\nlarge_client_header_buffers 4 32k;\nkeepalive_timeout 60;\nfastcgi_connect_timeout 300;\nfastcgi_send_timeout 300; …"