问题0:
sed 在/etc/hosts文件的第一行添加两行:
sed '1i\nameserver 10.70.63.150\nnameserver 202.106.0.20' /etc/resolv.conf  > /tmp/resolv.conf.tmp && cat /tmp/resolv.conf.tmp > /etc/resolv.conf


问题一:
sed在查找到的某行下面添加一行的方法
在文件nginx.conf下面加上一行新的vhost虚拟主机:


cat hosts | sed -e'1ihello world!' > afteradd.txt


直接在某行进行sed替换:
cat -n nginx.conf
发现是92行:
    92      include vhost/mini.conf;
    93  }
于是:

结果是在92行的下面插入了一行:
    include vhost/mini.conf;
    include vhost/api.xiyou102.jackxiang.com.conf;
}
想真替换在sed -i ,加上-i即可。

上面的实践来自:
原文件:
[root@xiaowu shell]# cat -n file
     1  aaaa
     2  bbbb
     3  cccc
     4  dddd

现在要在第二行即“bbbb”行的下面添加一行,内容为“xiaowu”
[root@xiaowu shell]# sed '/bbbb/a\xiaowu' file
aaaa
bbbb
xiaowu
cccc
dddd

如果要加两行“xiaowu”可以用一下语句,注意用“\n”换行
[root@xiaowu shell]# sed '/bbbb/a\xiaowu\nxiaowu' file
aaaa
bbbb
xiaowu
xiaowu
cccc
dddd

如果要在第二行即“bbbb”行的上添加一行,内容为“xiaowu”,可以把参数“a”换成“i”
[root@xiaowu shell]# sed '/b/i\xiaowu' file
aaaa
xiaowu
bbbb
cccc
dddd

以上文件中只有一行匹配,如果文件中有两行或者多行匹配,结果有是如何呢?

[root@xiaowu shell]# cat -n file
     1  aaaa
     2  bbbb
     3  cccc
     4  bbbb
     5  dddd

[root@xiaowu shell]# sed '/bbbb/a\xiaowu' file
aaaa
bbbb
xiaowu
cccc
bbbb
xiaowu
dddd

由结果可知,每个匹配行的下一行都会被添加“xiaowu”

那么如果指向在第二个“bbbb”的下一行添加内容“xiaowu”,该如何操作呢?
可以考虑先获取第二个“bbbb”行的行号,然后根据行号在此行的下一行添加“xiaowu”

获取第二个“bbbb”行的行号的方法:
方法一:
[root@xiaowu shell]# cat -n file |grep b |awk '{print $1}'|sed -n "2"p
4
方法二:
[root@xiaowu shell]# sed -n '/bbbb/=' file |sed -n "2"p
4
由结果可知第二个“bbbb”行的行号为4,然后再在第四行的前或后添加相应的内容:
[root@xiaowu shell]# sed -e '4a\xiaowu' file
aaaa
bbbb
cccc
bbbb
xiaowu
dddd
[root@xiaowu shell]# sed -e '4a\xiaowu\nxiaowu' file
aaaa
bbbb
cccc
bbbb
xiaowu
xiaowu
dddd


向指定行的末尾添加指定内容,比如在“ccccc”行的行尾介绍“ eeeee”

[root@xiaowu shell]# cat file
aaaaa
bbbbb
ccccc
ddddd
[root@xiaowu shell]# sed 's/cc.*/& eeeee/g' file
aaaaa
bbbbb
ccccc eeeee
ddddd
=======================================================================
问题二:
文件行首添加几行:如何把一行文字添加的一个文件的头部,通过sed添加到第一行
我认为最好的方法:
cat - file <<< 123

cat - hosts <<< 123 > out.txt


如在sql前面加入一行:set names utf8,其见如下:
[/home/jackxiang/sed]# vi append.txt
sql
sql2
sql3


cat - append.txt <<< "set names utf8"

[/home/jackxiang/sed]# cat - append.txt <<< "set names utf8" > addfirstline.txt

[/home/jackxiang/sed]#
vi addfirstline.txt
set names utf8
sql
sql2
sql3



通常使用的 MyISAM 表可以用上面提到的恢复方法来完成。如果是索引坏了,可以用 myisamchk 工具来重建索引。而对于 Innodb 表来说,就没这么直接了,因为它把所有的表都保存在一个表空间了。不过 Innodb 有一个检查机制叫模糊检查点,只要保存了日志文件,就能根据日志文件来修复错误。可以在 my.cnf 文件中,增加以下参数,让 mysqld 在启动时自动检查日志文件:


innodb_force_recovery = 4


要保存了日志文件!!!!
100925 19:18:46  mysqld started
100925 19:18:46  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
100925 19:18:46  InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 94 1409777360.
InnoDB: Doing recovery: scanned up to log sequence number 94 1409777360
100925 19:18:46  InnoDB: Error: page 4734977 log sequence number 94 1537001576
InnoDB: is in the future! Current system log sequence number 94 1409777360.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
InnoDB: for more information.
100925 19:18:46  InnoDB: Error: page 4734991 log sequence number 94 1668918230
InnoDB: is in the future! Current system log sequence number 94 1409777360.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files.

我考,没有InnoDb日志文件,彻底挂了!!!
MYSQL有不同类型的日志文件(各自存储了不同类型的日志),从它们当中可以查询到MYSQL里都做了些什么,对于MYSQL的管理工作,这些日志文件是不可缺少的。
1.错误日志(The error log):记录了数据库启动、运行以及停止过程中错误信息;
2.ISAM操作日志(The isam log):记录了所有对ISAM表的修改,该日志仅仅用于调试ISAM模式;
3.SQL执行日志(The query log):记录了客户端的连接以及所执行的SQL语句;
4.更新日志(The update log):记录了改变数据的语句,已经不建议使用,由二进制日志替代;
5.二进制日志(The binary log):记录了所有对数据库数据的修改语句;
6.超时日志(The slow log):记录所有执行时间超过最大SQL执行时间(long_query_time)或未使用索引的语句;

如果你是在用mysql的复制、备份功能,那么从服务器还提供了一种叫做relay log的日志文件。

默认情况下所有日志文件会记录在MYSQL的数据目录下,你可以通过强制mysql去关闭并重新打开一个文件进行日志记录,当然系统会自动加后缀 (如.00001, .00002),方式有在mysql环境下执行语句 mysql>flush logs; 或者通过mysqladmin管理程序执行 #mysqladmin flush-logs 或 #mysqladmin refresh

这些日志的启动方式可以在mysqld_safe方式启动数据库的时候,后面跟选项参数,也可以在配置文件里配置,推荐采用第二种方式,配置方法很简单,我只配置了三种日志:

[mysqld]
log=/var/log/mysqld_common.log
log-error=/var/log/mysqld_err.log
log-bin=/var/log/mysqld_bin.bin


日志的查看很简单,大部分都是文本,直接用vim、less、more之类的工具看就可以了,值得说明的是二进制文件的查看:

1). 首先确定是否开启了二进制文件记录功能
mysql>show variables like 'log_bin';

2). 如果你想知道现在记录二进制数据的文件具体信息,你可以通过下列语句看到现在正在记录哪个文件,以及记录的当前位置:
mysql>show master status;

3). 查看二进制数据需要借助程序mysqlbinlog,看看它支持哪些选项,根据自己需要来使用。
mysql>mysqlbinlog /var/log/mysql/mysql-bin.000040;
查询某个时间范围的可以执行下列语句,如果记录很多可以将结果定向到一个文件里自己慢慢看:-) :
mysql>mysqlbinlog --start-datetime='2008-01-01 00:00:00' --stop-datetime='2008-08-08 00:00:00'  /var/log/mysql/mysql-bin.000040 > ./tmp.log
来源:http://blog.csdn.net/tsuliuchao/archive/2009/12/14/5005457.aspx
因为JavaEye网站的数据库服务器搬家的时候被托管商的工作人员狠狠摔了一下,所以硬盘整个挂掉了,我重新安装数据库服务器的时候,顺手下载了 Percona patch过的MySQL5.0版本,使用MySQL自带的heavy innodb配置文件改了改,作为my.cnf启动运行。数据库服务器的物理内存有6GB,其中有4GB可以被MySQL使用,my.cnf相关配置参数如下:




  1. memlock
   2. innodb_buffer_pool_size = 2G
   3. innodb_log_file_size = 256M
   4. innodb_log_files_in_group = 3
   5. #innodb_flush_method=fdatasync 默认设置



memlock
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
#innodb_flush_method=fdatasync 默认设置




buffer pool越大越好,官方推荐使用物理内存的50%-80%;log_file_size也是越大越好,官方推荐log size加起来要达到buffer pool的25%-100%。使用memlock可以避免MySQL内存进入swap,这些都是默认的推荐配置了,没有什么可以质疑的地方。但是数据库服务器启动以后,运行不太正常。表现出来的现象是:

1、操作系统内存Disk Cache使用了2.7GB
2、操作系统swap空间使用了200MB左右,一直不停进行swap in/swap out
3、CPU的IO Wait偏高,平均在10%以上

这个现象看起来非常怪异和矛盾。IO Wait偏高显然是因为频繁的使用swap进行内存换页引起的,但问题是物理内存非常空闲,操作系统明明有2.7GB空闲物理内存做Disk Cache,怎么不吐出来一点,非要去用swap呢?

想来想去只有一种可能性,就是MySQL存在非常巨大的,频繁的文件读写操作,迫使操作系统不得不分配了2.7GB的Disk Cache,从而造成了物理内存的不足,被迫使用swap。而可能造成巨大文件读写操作的就是buffer pool的flush和log file的flush操作了。因此配置文件做如下修改:




   1. memlock
   2. innodb_buffer_pool_size = 2G
   3. innodb_log_file_size = 64M
   4. innodb_log_files_in_group = 2
   5. innodb_flush_method=O_DIRECT



memlock
innodb_buffer_pool_size = 2G
innodb_log_file_size = 64M
innodb_log_files_in_group = 2
innodb_flush_method=O_DIRECT




减少log file size和数量,使用O_DIRECT。重启以后,数据库服务器恢复正常。操作系统Disk Cache下降到900MB,Swap使用了200多MB,但是不再进行swap in/swap out操作,CPU的IO Wait下降到2-3%。

通过这次MySQL InnoDB的调优经历,发现一些和MySQL官方推荐配置不符合的疑惑之处,值得思考和探索:

1、innodb_flush_method究竟应不应该使用O_DIRECT?

所有MySQL调优的建议都说,如果硬件没有预读功能,那么使用O_DIRECT将极大降低InnoDB的性能,因为O_DIRECT跳过了操作系统的文件系统Disk Cache,让MySQL直接读写磁盘了。

但是在我的实践中来看,如果不使用O_DIRECT,操作系统被迫开辟大量的Disk Cache用于innodb的读写缓存,不但没有提高读写性能,反而造成读写性能急剧下降。而且buffer pool的数据缓存和操作系统Disk Cache缓存造成了Double buffer的浪费,显然从我这个实践来看,浪费得非常厉害。

说O_DIRECT造成MySQL直接读写磁盘造成得性能下降问题,我觉得完全是杞人忧天。因为从JavaEye的数据库监测来看,Innodb 的buffer pool命中率非常高,有98%以上,真正的磁盘操作是微乎其微的。为了1%的磁盘操作能够得到Disk Cache,而浪费了98%的double buffer内存空间,无论从性能上看,还是从内存资源的消耗来看,都是非常不明智的。

2、innodb_log_file_size究竟应该大一点,还是小一点?

所有MySQL调优建议都说,innodb_log_file_size要越大越好,避免无谓的buffer pool的flush操作。

但是在我的实践中来看,innodb_log_file_size开得太大,会明显增加innodb的log写入操作,而且会造成操作系统需要更多的Disk Cache开销。

因此从我的经验来看,innodb_flush_method=O_DIRECT是必须的,而innodb_log_file_size也不宜太大
05年再次实践:


如果没有问题,再次关闭后推入后台:
/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 ***


当然,用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


Onecent:~ # netstat -atlunp|grep 80|grep TIME_WAIT|wc
    787    5509   79487


Oncecent:~ # netstat -atlunp|grep 80|wc
   1030    7210  104030


线程数:
Onecent:/usr/local/apache2/conf # ps -ef |grep httpd |wc -l
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


注意: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


修理修理下面的参数:
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




修改:

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/
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加载成功,即安装完成。
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/
php5.3.3已经内置了php-fpm(之前是patch的形式),编译的时候,设置以下参数就可以了

–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
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";      
    }      
?>  
阅读全文
http://gfeng.org/?p=147
在PHP中用exec()或popen()函数将一个shell命令行推到后台去.
PHP执行Shell命令发现popen好像是异步执行的,奶奶的。。奇怪了。。关注下
分页: 163/339 第一页 上页 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 下页 最后页 [ 显示模式: 摘要 | 列表 ]