05年再次实践:
如果没有问题,再次关闭后推入后台:
/usr/local/mysql/bin/mysqld_safe --user=root &
停止:
确定停止?:
root 4121 0.0 0.0 5800 2488 pts/35 S+ 16:22 0:00 mysql
gastonwu 5365 0.0 0.0 5192 2256 pts/67 S+ Aug24 0:00 mysql -u root -p
root 5844 0.0 0.0 5800 2516 pts/28 S+ 16:28 0:00 mysql -uwiki -p wiki -hlocalhost
root 11169 0.0 0.0 2768 744 pts/49 S+ 16:46 0:00 grep mysql
root 15169 0.0 0.0 5844 2712 pts/8 S+ Sep23 0:00 mysql
gastonwu 18138 0.0 0.0 5188 2276 pts/91 S+ Aug25 0:00 mysql -u root -p DB_DemoSoapp
root 23843 0.0 0.0 5800 2584 pts/27 S+ 15:40 0:00 mysql
root 27623 0.0 0.0 5800 2568 pts/99 S+ 14:08 0:00 mysql
启动:
Starting mysqld daemon with databases from /usr/local/mysql/data[1]+ Stopped /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root
客户端登陆:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-max
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
如果已经连上后,重启后会出现:
当然,用pkill 杀mysql的进程也是也可以的,呵呵!
如果没有问题,再次关闭后推入后台:
/usr/local/mysql/bin/mysqld_safe --user=root &
mysqladmin -u root shutdown
停止:
[/usr/local/mysql/bin]# mysqladmin -u root shutdown
确定停止?:
[/usr/local/mysql/bin]# ps axu|grep mysql
root 4121 0.0 0.0 5800 2488 pts/35 S+ 16:22 0:00 mysql
gastonwu 5365 0.0 0.0 5192 2256 pts/67 S+ Aug24 0:00 mysql -u root -p
root 5844 0.0 0.0 5800 2516 pts/28 S+ 16:28 0:00 mysql -uwiki -p wiki -hlocalhost
root 11169 0.0 0.0 2768 744 pts/49 S+ 16:46 0:00 grep mysql
root 15169 0.0 0.0 5844 2712 pts/8 S+ Sep23 0:00 mysql
gastonwu 18138 0.0 0.0 5188 2276 pts/91 S+ Aug25 0:00 mysql -u root -p DB_DemoSoapp
root 23843 0.0 0.0 5800 2584 pts/27 S+ 15:40 0:00 mysql
root 27623 0.0 0.0 5800 2568 pts/99 S+ 14:08 0:00 mysql
启动:
[/usr/local/mysql/bin]# /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root
Starting mysqld daemon with databases from /usr/local/mysql/data[1]+ Stopped /bin/sh /usr/local/mysql/bin/mysqld_safe --user=root
客户端登陆:
[/usr/local/mysql/bin]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.27-max
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
如果已经连上后,重启后会出现:
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 2
Current database: *** NONE ***
No connection. Trying to reconnect...
Connection id: 2
Current database: *** NONE ***
当然,用pkill 杀mysql的进程也是也可以的,呵呵!
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r +0n
Onecent:~ # netstat -an | grep 80 | awk '{print $6}' | sort | uniq -c | sort -rn
681 TIME_WAIT
122 ESTABLISHED
107 FIN_WAIT2
44 FIN_WAIT1
14 SYN_SENT
3 LAST_ACK
2 SYN_RECV
1 LISTEN
1 CLOSING
linux可以查看多少人连接了80端口:
Onecent:~ # netstat -na | grep ":80" | wc
1074 6444 86994
1074 6444 86994
Onecent:~ # netstat -atlunp|grep 80|grep TIME_WAIT|wc
787 5509 79487
787 5509 79487
Oncecent:~ # netstat -atlunp|grep 80|wc
1030 7210 104030
1030 7210 104030
线程数:
Onecent:/usr/local/apache2/conf # ps -ef |grep httpd |wc -l
360
360
工作模式查看:
Onecent:/usr/local/apache2/conf # /usr/local/apache2/bin/httpd -l
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_cache.c
mod_disk_cache.c
mod_mem_cache.c
mod_include.c
mod_deflate.c
mod_log_config.c
mod_env.c
mod_expires.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_cache.c
mod_disk_cache.c
mod_mem_cache.c
mod_include.c
mod_deflate.c
mod_log_config.c
mod_env.c
mod_expires.c
mod_setenvif.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_autoindex.c
mod_asis.c
mod_cgi.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_rewrite.c
mod_so.c
注意:prefork.c //此处为mpm工作模式,也可使用worker.c模式
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
Onecent:/usr/local/# netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
LAST_ACK 3
SYN_RECV 5
ESTABLISHED 207
FIN_WAIT1 63
FIN_WAIT2 105
SYN_SENT 1
TIME_WAIT 912
LAST_ACK 3
SYN_RECV 5
ESTABLISHED 207
FIN_WAIT1 63
FIN_WAIT2 105
SYN_SENT 1
TIME_WAIT 912
修理修理下面的参数:
sysctl -p
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 2048 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 2048 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
修改:
1, sysctl命令的作用
在运行时配置内核参数
2,用法举例:
-w 用此选项来改变一个sysctl设置
例:sysctl -w net.ipv4.ip_forward=1
-p 载入sysctl配置文件
如-p后未指定路径,则载入 /etc/sysctl.conf
例: sysctl -p /etc/sysctl.conf
3,修改/etc/sysctl.conf可以保存设置在机器重启后仍然有效
例如:
vi /etc/sysctl.conf
修改: net.ipv4.ip_forward=0的值为1
作用:打开数据包的转发功能
如何使修改马上生效?
sysctl -p /etc/sysctl.conf // 作用:重新载入/etc/sysctl.conf文件
整个张宴的nginx的配置,如下,可以参考:
优化Linux内核参数
vi /etc/sysctl.conf
在末尾增加以下内容:
引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
使配置立即生效:
/sbin/sysctl -p
腾讯,这家中国最大的互联网公司,产品线越来越长。在中国本土引发更多争议的同时,腾讯也开始让硅谷人士侧目,甚至感到寒意。
阅读全文
阅读全文
当FreeBSD系统上线运行一段时间后,用top命令查看内存的使用情况,会发现Free内存已经变得很小了。而在同样应用的情况下,Windows Server的Free内存会有很大的剩余。这是为什么呢?难道FreeBSD系统比Windows Server还要消耗内存?
答案当然是否定的。其实,这是由于FreeBSD的内存管理与Windows Server的不同。FreeBSD会最大化的利用系统中的内存,系统中有多少内存,FreeBSD都会尽量去使用。
使用top命令,你会发现内存被分为以下几种。
引用
Active,在一段时间内被使用的内存
Inact(Inactive),在一段时间内没有被使用的内存
Wired,挂起的内存,系统内核使用的内存
Cache、Buf,顾名思义,用于缓存,其中的数据有可能被再次使用,避免从磁盘中读取,加快读取速度
Free,系统中空闲的内存
当需要使用内存时,是以以下优先级来进行的。
引用
Free > Cache(Buf) > Inact > Active
所以,当Free变小时,不必担心内存不够用,只要Free内存还有,就表示内存够用。这正是FreeBSD内存管理的优越性,最大化利用内存,使系统的整体性能得到充分的发挥。只有当Swap使用较多时,我们才应该考虑增加内存了。
来源:http://blog.jiqila.com/post/210/
答案当然是否定的。其实,这是由于FreeBSD的内存管理与Windows Server的不同。FreeBSD会最大化的利用系统中的内存,系统中有多少内存,FreeBSD都会尽量去使用。
使用top命令,你会发现内存被分为以下几种。
引用
Active,在一段时间内被使用的内存
Inact(Inactive),在一段时间内没有被使用的内存
Wired,挂起的内存,系统内核使用的内存
Cache、Buf,顾名思义,用于缓存,其中的数据有可能被再次使用,避免从磁盘中读取,加快读取速度
Free,系统中空闲的内存
当需要使用内存时,是以以下优先级来进行的。
引用
Free > Cache(Buf) > Inact > Active
所以,当Free变小时,不必担心内存不够用,只要Free内存还有,就表示内存够用。这正是FreeBSD内存管理的优越性,最大化利用内存,使系统的整体性能得到充分的发挥。只有当Swap使用较多时,我们才应该考虑增加内存了。
来源:http://blog.jiqila.com/post/210/
cat /etc/rc.conf
hostname="freebsd-unmp-10-10-0-237"
#ifconfig_vtnet0="inet 10.10.0.237 netmask 255.255.255.0" #为名称是vtnet0的网卡设置
ifconfig_re0="inet 10.10.0.237 netmask 255.255.255.0" #ifconfig 看网卡名
defaultrouter="10.10.0.1"
/etc/netstart
FreeBSD13上配置静态IP地址:
Port安装准备
修改DNS 命令:ee /etc/resolv.conf
添加DNS服务器地址 nameserver x.x.x.x 存盘重启(x.x.x.x用实际的ip地址代替)
下载Port安装目录文件 命令:portsnap fetch
更新Port安装目录文件 命令:portsnap extract update
来自:https://liujia.anqun.org/index.php/archives/1451/
=============
一、制作启动U盘
从FreeBSD官网(https://www.freebsd.org/)下载安装源程序: FreeBSD-12.0-RELEASE-amd64-memstick.img
从rufus官网(https://rufus.akeo.ie/)下载rufus.exe。
用rufur制作FreeBSD安装启动盘。
二、安装FreeBSD12.0
将电脑设置成U盘启动。
启动后,基本自动安装,如遇选择项,全选Y;
添加用户(略)。
三、开通SSH服务
安装完毕后,重启。
root登录,修改远程登录配置。
命令:ee /etc/inetd.conf
打开inetd.conf文件,将SSH服务前的“#”去掉,存盘重启。
可以使用Putty远程登录了。
四、Port安装准备
修改DNS 命令:ee /etc/resolv.conf
添加DNS服务器地址 nameserver x.x.x.x 存盘重启(x.x.x.x用实际的ip地址代替)
下载Port安装目录文件 命令:portsnap fetch
更新Port安装目录文件 命令:portsnap extract update
五、安装Apache24
进入 /usr/ports/www/apache24/目录
安装,命令:make install clean
设置服务器地址 命令:ee /usr/local/etc/apache24/httpd.conf
修改www服务器地址 ServerName x.x.x.x:80(x.x.x.x用实际的ip地址代替)
修改开机启动文件,设置Apache24随开机启动,命令:ee /etc/rc.conf
添加 apache24_enable="YES" 存盘启动。
安装完毕,默认网页目录: /usr/local/www/apache24/data/
Apache相关命令 启动 apachectl start 停止 apachectl stop 重启 apachectl restart
六、安装MySQL80
建议先于PHP安装MySQL,进入/usr/ports/databases/mysql80-server
安装 命令:make install clean
修改开机启动文件,设置MySQL随开机启动,命令:ee /etc/rc.conf
添加 mysql_enable="YES" 存盘启动。
七、安装php73
进入/usr/ports/lang/php73
安装 命令:make install clean
八、配置 Apache24和PHP73
进入/usr/ports/www/mod_php73
安装 命令:make install clean
修改配置文件 ee /usr/local/etc/apache24/httpd.conf
添加
DrectoryIndex index.html index.php
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
<�6�8FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
<�6�8FilesMatch>
编写入口文件index.php 内容为<?php phpinfo(); ?> 存盘重启
通过服务器地址访问index.php
复制配置文件 /usr/local/etc/php.ini-development 到 /usr/local/etc/php.ini
九、配置PHP73和MySQL80
进入/usr/ports/lang/php73-extensions
安装 命令:make install clean
出现选择菜单时,选mysqli
访问index.php,如mysqli加载成功,即安装完成。
hostname="freebsd-unmp-10-10-0-237"
#ifconfig_vtnet0="inet 10.10.0.237 netmask 255.255.255.0" #为名称是vtnet0的网卡设置
ifconfig_re0="inet 10.10.0.237 netmask 255.255.255.0" #ifconfig 看网卡名
defaultrouter="10.10.0.1"
/etc/netstart
FreeBSD13上配置静态IP地址:
Port安装准备
修改DNS 命令:ee /etc/resolv.conf
添加DNS服务器地址 nameserver x.x.x.x 存盘重启(x.x.x.x用实际的ip地址代替)
下载Port安装目录文件 命令:portsnap fetch
更新Port安装目录文件 命令:portsnap extract update
来自:https://liujia.anqun.org/index.php/archives/1451/
=============
一、制作启动U盘
从FreeBSD官网(https://www.freebsd.org/)下载安装源程序: FreeBSD-12.0-RELEASE-amd64-memstick.img
从rufus官网(https://rufus.akeo.ie/)下载rufus.exe。
用rufur制作FreeBSD安装启动盘。
二、安装FreeBSD12.0
将电脑设置成U盘启动。
启动后,基本自动安装,如遇选择项,全选Y;
添加用户(略)。
三、开通SSH服务
安装完毕后,重启。
root登录,修改远程登录配置。
命令:ee /etc/inetd.conf
打开inetd.conf文件,将SSH服务前的“#”去掉,存盘重启。
可以使用Putty远程登录了。
四、Port安装准备
修改DNS 命令:ee /etc/resolv.conf
添加DNS服务器地址 nameserver x.x.x.x 存盘重启(x.x.x.x用实际的ip地址代替)
下载Port安装目录文件 命令:portsnap fetch
更新Port安装目录文件 命令:portsnap extract update
五、安装Apache24
进入 /usr/ports/www/apache24/目录
安装,命令:make install clean
设置服务器地址 命令:ee /usr/local/etc/apache24/httpd.conf
修改www服务器地址 ServerName x.x.x.x:80(x.x.x.x用实际的ip地址代替)
修改开机启动文件,设置Apache24随开机启动,命令:ee /etc/rc.conf
添加 apache24_enable="YES" 存盘启动。
安装完毕,默认网页目录: /usr/local/www/apache24/data/
Apache相关命令 启动 apachectl start 停止 apachectl stop 重启 apachectl restart
六、安装MySQL80
建议先于PHP安装MySQL,进入/usr/ports/databases/mysql80-server
安装 命令:make install clean
修改开机启动文件,设置MySQL随开机启动,命令:ee /etc/rc.conf
添加 mysql_enable="YES" 存盘启动。
七、安装php73
进入/usr/ports/lang/php73
安装 命令:make install clean
八、配置 Apache24和PHP73
进入/usr/ports/www/mod_php73
安装 命令:make install clean
修改配置文件 ee /usr/local/etc/apache24/httpd.conf
添加
DrectoryIndex index.html index.php
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
<�6�8FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
<�6�8FilesMatch>
编写入口文件index.php 内容为<?php phpinfo(); ?> 存盘重启
通过服务器地址访问index.php
复制配置文件 /usr/local/etc/php.ini-development 到 /usr/local/etc/php.ini
九、配置PHP73和MySQL80
进入/usr/ports/lang/php73-extensions
安装 命令:make install clean
出现选择菜单时,选mysqli
访问index.php,如mysqli加载成功,即安装完成。
dmesg 最简单的方法
freebsd# cat /var/run/dmesg.boot |grep CPU 可以查看 cpu信息
sysctl hw.model 看cpuid
sysctl machdep.tsc_freq 看cpu频率
或者直接通过ports
cd /usr/ports/misc/cpuid
make install clean
然后
可以直接通过cpuid来查看
/usr/local/bin/cpuid
Tags: cpu , freebsd
来自:http://blog.sina.com.cn/s/blog_49f8dc400100wnn9.html
获取CPU速度
在shell下键入以下命令:
引用
sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'
将会得到大概如下输出:
引用
hw.machine: amd64
hw.model: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
hw.ncpu: 8
hw.machine_arch: amd64
那么,通过以上信息我们得知CPU为Intel Xeon四核,频率为2.4GHz
获取更多CPU信息
为了得到更详细的CPU信息,我们可以用下面的命令:
引用
dmesg | grep -i cpu
或
grep -i cpu /var/run/dmesg.boot
将会得到大概如下输出:
引用
CPU: Intel(R) Xeon(TM) CPU 3.00GHz (3000.12-MHz K8-class CPU)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID: 0
cpu1 (AP/HT): APIC ID: 1
cpu0: <ACPI CPU> on acpi0
p4tcc0: on cpu0
cpu1: <ACPI CPU> on acpi0
p4tcc1: on cpu1
SMP: AP CPU #1 Launched!
来源:http://blog.jiqila.com/post/227/
freebsd# cat /var/run/dmesg.boot |grep CPU 可以查看 cpu信息
sysctl hw.model 看cpuid
sysctl machdep.tsc_freq 看cpu频率
或者直接通过ports
cd /usr/ports/misc/cpuid
make install clean
然后
可以直接通过cpuid来查看
/usr/local/bin/cpuid
Tags: cpu , freebsd
来自:http://blog.sina.com.cn/s/blog_49f8dc400100wnn9.html
获取CPU速度
在shell下键入以下命令:
引用
sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'
将会得到大概如下输出:
引用
hw.machine: amd64
hw.model: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
hw.ncpu: 8
hw.machine_arch: amd64
那么,通过以上信息我们得知CPU为Intel Xeon四核,频率为2.4GHz
获取更多CPU信息
为了得到更详细的CPU信息,我们可以用下面的命令:
引用
dmesg | grep -i cpu
或
grep -i cpu /var/run/dmesg.boot
将会得到大概如下输出:
引用
CPU: Intel(R) Xeon(TM) CPU 3.00GHz (3000.12-MHz K8-class CPU)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0 (BSP): APIC ID: 0
cpu1 (AP/HT): APIC ID: 1
cpu0: <ACPI CPU> on acpi0
p4tcc0: on cpu0
cpu1: <ACPI CPU> on acpi0
p4tcc1: on cpu1
SMP: AP CPU #1 Launched!
来源:http://blog.jiqila.com/post/227/
php5.3.3已经内置了php-fpm(之前是patch的形式),编译的时候,设置以下参数就可以了
–enable-fpm
---------------------------------------------------
安装php 5.3.3(5.3.3已包括fpm):阅读全文
–enable-fpm
---------------------------------------------------
安装php 5.3.3(5.3.3已包括fpm):阅读全文
HTML <form> 标签的 accept-charset 属性定义和用法accept-charset 属性规定服务器处理表单数据所接受的字符集。
accept-charset 属性允许您指定一系列字符集,服务器必须支持这些字符集,从而得以正确解释表单中的数据。
该属性的值是用引号包含字符集名称列表。如果可接受字符集与用户所使用的字符即不相匹配的话,浏览器可以选择忽略表单或是将该表单区别对待。
此属性的默认值是 "unknown",表示表单的字符集与包含表单的文档的字符集相同。
提示:请避免使用该属性。应该在服务器端验证文件上传。
accept-charset
一个很少用到的表单属性,利用它实现在不同编码的页面里实现表单的提交也是一种很方便的解决方法。转自老王的baidu空间,记录在此。
作者:老王
问题背景:
两个应用编码不同,一个是GBK编码,另一个是UTF-8编码。现在要在GBK编码的应用里使用表单向UTF-8编码的应用里提交数据,很显然,如果不做特殊处理的话,会出现乱码。
解决方案:
当然了,可以自己使用ICONV或者MB扩展来转换编码,但这不是我们要的。
在W3里介绍了一个不太常见的属性:accept-charset,用它可以完成我们的需求。
在GBK编码的页面里编写如下代码:
<form method="post" action="..." accept-charset="utf-8">
...
</form>
如此的代码在Firefox等正常的浏览器下没有任何问题,但是遇到IE这个变态浏览器就不灵光了,我们还得用点不入流的手段Hack一下:
<form method="post" action="..." accept-charset="utf-8" onsubmit="document.charset='utf-8';">
...
</form>
剩下的工作浏览器会搞定。
参考:
http://www.w3school.com.cn/tags/att_form_accept_charset.asp
http://blog.zol.com.cn/795/article_794546.html
来源:http://gfeng.org/?m=201009
accept-charset 属性允许您指定一系列字符集,服务器必须支持这些字符集,从而得以正确解释表单中的数据。
该属性的值是用引号包含字符集名称列表。如果可接受字符集与用户所使用的字符即不相匹配的话,浏览器可以选择忽略表单或是将该表单区别对待。
此属性的默认值是 "unknown",表示表单的字符集与包含表单的文档的字符集相同。
提示:请避免使用该属性。应该在服务器端验证文件上传。
accept-charset
一个很少用到的表单属性,利用它实现在不同编码的页面里实现表单的提交也是一种很方便的解决方法。转自老王的baidu空间,记录在此。
作者:老王
问题背景:
两个应用编码不同,一个是GBK编码,另一个是UTF-8编码。现在要在GBK编码的应用里使用表单向UTF-8编码的应用里提交数据,很显然,如果不做特殊处理的话,会出现乱码。
解决方案:
当然了,可以自己使用ICONV或者MB扩展来转换编码,但这不是我们要的。
在W3里介绍了一个不太常见的属性:accept-charset,用它可以完成我们的需求。
在GBK编码的页面里编写如下代码:
<form method="post" action="..." accept-charset="utf-8">
...
</form>
如此的代码在Firefox等正常的浏览器下没有任何问题,但是遇到IE这个变态浏览器就不灵光了,我们还得用点不入流的手段Hack一下:
<form method="post" action="..." accept-charset="utf-8" onsubmit="document.charset='utf-8';">
...
</form>
剩下的工作浏览器会搞定。
参考:
http://www.w3school.com.cn/tags/att_form_accept_charset.asp
http://blog.zol.com.cn/795/article_794546.html
来源:http://gfeng.org/?m=201009
file_get_contents() 函数
定义和用法
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
语法
file_get_contents(path,include_path,context,start,max_length)参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context 可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
说明
对 context 的支持是 PHP 5.0.0 添加的。
针对超时或页面过慢,一般可采取两个解决方案:
1. 利用file_get_contents()第三个参数
<?php
$url = "http://zhoz.com/zhoz.php";
$ctx = stream_context_create(array(
‘http’ => array(‘timeout’ => 10)
)
);
$result = @file_get_contents($url, 0, $ctx);
if($result){
var_dump($result);
}else{
echo " Buffer is empty";
}
?>
阅读全文
定义和用法
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
语法
file_get_contents(path,include_path,context,start,max_length)参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context 可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
说明
对 context 的支持是 PHP 5.0.0 添加的。
针对超时或页面过慢,一般可采取两个解决方案:
1. 利用file_get_contents()第三个参数
<?php
$url = "http://zhoz.com/zhoz.php";
$ctx = stream_context_create(array(
‘http’ => array(‘timeout’ => 10)
)
);
$result = @file_get_contents($url, 0, $ctx);
if($result){
var_dump($result);
}else{
echo " Buffer is empty";
}
?>
阅读全文
http://gfeng.org/?p=147
在PHP中用exec()或popen()函数将一个shell命令行推到后台去.
PHP执行Shell命令发现popen好像是异步执行的,奶奶的。。奇怪了。。关注下
在PHP中用exec()或popen()函数将一个shell命令行推到后台去.
PHP执行Shell命令发现popen好像是异步执行的,奶奶的。。奇怪了。。关注下
今天,在写shell的时候,需要读取一个sh文件的内容,然后给予拼接字符串后执行这个字符串,出现换行的情况,于是,经过苦心查找,原来是读取vi编辑文件的后面有换行符,通过php的trim对其做了处理,OK,以前一直没有注意,原来Linux的vi一直都在干这个事情,哈哈哈,特别写下这个记录!
----------------------------------------------------------------------------------------------------------------------------------------------------
Linux下vi一个jackxiang.txt,然后,sz下来,用编辑器:FlexHEX.ext打开Jackxiang.txt,换行符的查看:
换行符(\n) 相当于ASCII 换行字符(十六进制0A),
因此,在文本模式下打开的文件作为新行字符读入CR/LF 对,并且作为CR/LF 写入新行字符。
原来是vi编辑器自己在行尾加了个\n换行符。用od命令可看的很清楚:od -A d -t c jackxiang.txt
PHP用trim去掉换行符,即可! "\n" (ASCII 10 (0x0A)), a new line (line feed).
阅读全文
----------------------------------------------------------------------------------------------------------------------------------------------------
Linux下vi一个jackxiang.txt,然后,sz下来,用编辑器:FlexHEX.ext打开Jackxiang.txt,换行符的查看:
16进制:6A 61 63 6B 78 69 61 6E 67 0A
原文:jackxiang
原文:jackxiang
换行符(\n) 相当于ASCII 换行字符(十六进制0A),
因此,在文本模式下打开的文件作为新行字符读入CR/LF 对,并且作为CR/LF 写入新行字符。
原来是vi编辑器自己在行尾加了个\n换行符。用od命令可看的很清楚:od -A d -t c jackxiang.txt
Onecent:/usr/local/tads/htdocs/*****_2010/bin # od -A d -t c jackxiang.txt
0000000 j a c k x i a n g \n
0000010
0000000 j a c k x i a n g \n
0000010
PHP用trim去掉换行符,即可! "\n" (ASCII 10 (0x0A)), a new line (line feed).
阅读全文
[个人原创]awk取得绝对路径和文件名拼接的方法
Php/Js/Shell/Go jackxiang 2010-9-21 17:19
原因很简单,需要某个目录下的shell文件同时推到后台执行:
引申:
结果如下:
TTTTT:/usr/local/tads/htdocs/*/data/20100920 #
导入到文件:
其实际在shell编程过程中,往往需要用到绝对地址的时候,就不用这个,如下:
路径已经在里面了!
awk -v var=$(pwd) 'BEGIN{print var}'
引申:
ls -lart GrepQQCommand_*|awk -v PWD=$PWD '{print PWD "/" $9}'
结果如下:
/usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_ak
/usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_bc
/usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_ef
/usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_bc
/usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_ef
TTTTT:/usr/local/tads/htdocs/*/data/20100920 #
ls -lart GrepQQCommand_*|awk -v PWD=$PWD '{print "nohup sh " PWD "/" $9 "&"}'
nohup sh /usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_ak&
nohup sh /usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_bc&
nohup sh /usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_ef&
nohup sh /usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_bc&
nohup sh /usr/local/tads/htdocs/*/data/20100920/GrepQQCommand_ef&
导入到文件:
s -lart GrepQQCommand_*|awk -v PWD=$PWD '{print "nohup sh " PWD "/" $9 "&"}' > ccc.sh
然后:sh ccc.sh即可。其实际在shell编程过程中,往往需要用到绝对地址的时候,就不用这个,如下:
ls -lart /usr/local/tads/htdocs/*****_2010/data/20100921/GrepQQCommand_*
-rwxrwxrwx 1 root users 284064 Sep 22 15:39 /usr/local/tads/htdocs/*****_2010/data/20100921/GrepQQCommand_aa
-rwxrwxrwx 1 root users 284064 Sep 22 15:39 /usr/local/tads/htdocs/*****_2010/data/20100921/GrepQQCommand_aa
路径已经在里面了!
cat CCC_ad |awk '{print '"$(date +"%Y%m%d%H%M%S")"',$1,$5,$6,$7,$8}'
cat CCC_ad |awk '{print strftime(), $1,$5,$6,$7,$8}'
now=$(date +%Y-%m-%d" "%H:%M:%S)
echo $now
echo $now
Math.round(Math.random()*10000)
alert(Math.round(Math.random()*10000))
使用如下:
var item = $("input:radio:checked");
var checkedvalue = item.val();
var fqq = $('#FVotedQQ').val();
var frominvite = $('#frominvite').val();
var random = Math.round(Math.random()*10000);
var getaward = $.ajax({
url: "http://***.act.***.com/c/vote/add",
data:"FVotedQQ="+fqq+"&kindid="+checkedvalue+"&frominvite="+frominvite+"random="+random,
async: false
}).responseText;
eval('var data = '+getaward);
alert(data.message);
split -l 5000 CCC.txt CCC_New.txt
[~/split]# ls
CCC_New.txtaa CCC_New.txtad CCC_New.txtag CCC_New.txtaj CCC_New.txtam CCC_New.txtap
CCC_New.txtab CCC_New.txtae CCC_New.txtah CCC_New.txtak CCC_New.txtan CCC_New.txtaq
CCC_New.txtac CCC_New.txtaf CCC_New.txtai CCC_New.txtal CCC_New.txtao CCC.txt
今天接到一个需求是提取5月访问某域名的所有用户号码,文件一存放访问域名下地址A的用户号码,剩余用户按照50万整数一个包为规则提取。
这个剩余用户按照50万一个包让人看着有点紧张,怎么提?难道要用rownum?
不要被蒙蔽!还是提成一个文件好了,用linux下的split一分就完事了。
怎么用?
这样写
split -l 500000 js_24875.csv new_js_24875.csv
split -l n
把infile拆分为n行的段,默认一个文件为1000行、、split --help
-l, --lines=NUMBER put NUMBER lines per output file
-l, --lines=NUMBER put NUMBER lines per output file
注意:
split: Output file suffixes exhausted 注意此处:split在提示我们说输出时的文件名后缀被用光了
[root@linux ~]# split [-bl] file PREFIX
参数:
-b :后面可接欲分割成的档案大小,可加单位,例如 b, k, m 等;
-l :以行数来进行分割。
范例:
范例一:我的 /etc/termcap 有七百多K,若想要分成 300K 一个档案时?
[root@linux ~]# cd /tmp; split -b 300k /etc/termcap termcap
[root@linux tmp]# ls -l termcap*
-rw-rw-r-- 1 root root 307200 8月 17 00:25 termcapaa
-rw-rw-r-- 1 root root 307200 8月 17 00:25 termcapab
-rw-rw-r-- 1 root root 184848 8月 17 00:25 termcapac
# 那个档名可以随意取的啦!我们只要写上前导文字,小档案就会以
# xxxaa, xxxab, xxxac 等方式来建立小档案的!
范例二:如何将上面的三个小档案合成一个档案,档名为 termcapback
[root@linux tmp]# cat termcap* >> termcapback
# 很简单吧?就用资料流重导向就好啦!简单!
一、 MySQL: 索引以B树格式保存
Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较。
1、普通索引:create index on Tablename(列的列表)
alter table TableName add index (列的列表)
create table TableName([...], index [IndexName] (列的列表)
2、唯一性索引:create unique index
alter ... add unique
主键:一种唯一性索引,必须指定为primary key
3、全文索引:从3.23.23版开始支持全文索引和全文检索,FULLTEXT,
可以在char、varchar或text类型的列上创建。
4、单列索引、多列索引:
多个单列索引与单个多列索引的查询效果不同,因为:
执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。
5、最左前缀(Leftmost Prefixing):多列索引,例如:fname_lname_age索引,以下的搜索条件MySQL都将使用
fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情况将不使用。
二、根据sql查询语句确定创建哪种类型的索引,如何优化查询
选择索引列:
a.性能优化过程中,选择在哪个列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有
两种类型的列:在where子句中出现的列,在join子句中出现的列。
b.考虑列中值的分布,索引的列的基数越大,索引的效果越好。
c.使用短索引,如果对字符串列进行索引,应该指定一个前缀长度,可节省大量索引空间,提升查询速度。
d.利用最左前缀
e.不要过度索引,只保持所需的索引。每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能。
在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长。
MySQL只对一下操作符才使用索引:<,<=,=,>,>=,between,in,
以及某些时候的like(不以通配符%或_开头的情形)。
来源:http://database.51cto.com/art/200905/122789.htm
Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较。
1、普通索引:create index on Tablename(列的列表)
alter table TableName add index (列的列表)
create table TableName([...], index [IndexName] (列的列表)
2、唯一性索引:create unique index
alter ... add unique
主键:一种唯一性索引,必须指定为primary key
3、全文索引:从3.23.23版开始支持全文索引和全文检索,FULLTEXT,
可以在char、varchar或text类型的列上创建。
4、单列索引、多列索引:
多个单列索引与单个多列索引的查询效果不同,因为:
执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。
5、最左前缀(Leftmost Prefixing):多列索引,例如:fname_lname_age索引,以下的搜索条件MySQL都将使用
fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情况将不使用。
二、根据sql查询语句确定创建哪种类型的索引,如何优化查询
选择索引列:
a.性能优化过程中,选择在哪个列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有
两种类型的列:在where子句中出现的列,在join子句中出现的列。
b.考虑列中值的分布,索引的列的基数越大,索引的效果越好。
c.使用短索引,如果对字符串列进行索引,应该指定一个前缀长度,可节省大量索引空间,提升查询速度。
d.利用最左前缀
e.不要过度索引,只保持所需的索引。每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能。
在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长。
MySQL只对一下操作符才使用索引:<,<=,=,>,>=,between,in,
以及某些时候的like(不以通配符%或_开头的情形)。
来源:http://database.51cto.com/art/200905/122789.htm