由 dessun 发表于 2011-11-10 04:14:45
优化前
优化后
$T_productsortcity= new Panel_Model_DbTable_ProductSortCity();
$T_productsortcity->delete(array('productId = ?' => $productId));
foreach ($post['scity'] as $key => $value) {
foreach($value as $v):
$T_productsortcity->insert(array('productId' => $productId, 'provinceID' => $key, 'city' => $v));
endforeach;
由 dessun 发表于 2011-11-09 09:17:09
大型网站 zend 可以创建数据模型 进行查询
application/modules/ACTION/controllers 下的文件是控制器 文件
application/modules/ACTION/views/scripts 下的文件是视图文件
application/modules/ACTION/models/DbTable 下的文件是数据模型
application/configs/application.ini 是配置文件
application/configs/*.xml 是 菜单文件
Bootstrap.php 是引导程序
引文 Zend官方数据库直接查询方法
Tags: sql,zend framework
由 dessun 发表于 2011-11-02 06:08:08
VPS十分繁忙,在跑一些密集操作数据库的Rake任务时尤其如此。但我观察发现,VPS服务器的4核CPU,只有第1个核心(CPU#0)非常忙,其他都处于idle状态。
不了解Linux是如何调度的,但在VPS的这种状态下,显然有优化的余地。除了处理正常任务,CPU#0还需要处理各种中断。因此,若能将CPU#0分担的任务摊派到其他CPU核心上,可以预见,系统的处理能力将有更大的提升。
两个名词
SMP (Symmetrical Multi-Processing):指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。 [更多...]
CPU affinity:中文唤作“CPU亲和力”,是指在CMP架构下,能够将一个或多个进程绑定到一个或多个处理器上运行。[更多...]
一、在Linux上修改进程的“CPU亲和力”
在Linux上,可以通过 taskset 命令进行修改。以Ubuntu为例,运行如下命令可以安装taskset工具。
# apt-get install schedutils
对运行中的进程,文档上说可以用下面的命令,把CPU#1 #2 #3分配给PID为2345的进程:
# taskset -cp 1,2,3 2345
但我尝试没奏效,于是我关掉了MySQL,并用taskset将它启动:
# taskset -c 1,2,3 /etc/init.d/mysql start
对于其他进程,也可如此处理(nginx除外,详见下文)。之后用top查看CPU的使用情况,原来空闲的#1 #2 #3,已经在辛勤工作了。
二、配置nginx绑定CPU
刚才说nginx除外,是因为nginx提供了更精确的控制。
在conf/nginx.conf中,有如下一行:
worker_processes 1;
这是用来配置nginx启动几个工作进程的,默认为1。而nginx还支持一个名为worker_cpu_affinity的配置项,也就是说,nginx可以为每个工作进程绑定CPU。我做了如下配置:
worker_processes 3;
worker_cpu_affinity 0010 0100 1000;
这里0010 0100 1000是掩码,分别代表第2、3、4颗cpu核心。
重启nginx后,3个工作进程就可以各自用各自的CPU了。
三、刨根问底
如果自己写代码,要把进程绑定到CPU,该怎么做?可以用sched_setaffinity函数。在Linux上,这会触发一次系统调用。
如果父进程设置了affinity,之后其创建的子进程是否会有同样的属性?我发现子进程确实继承了父进程的affinity属性(其实用taskset启动进程就是一次fork+exec)。
四、Windows?
在Windows上修改“CPU亲和力”,可以通过任务管理器搞定。
点击进程 关系设置 即可
* 个人感觉,Windows系统中翻译的“处理器关系”比“CPU亲和力”容易理解点儿
—————–
进行了这样的修改后,即使系统负载达到3以上,不带缓存打开首页(有40多次查询)依然顺畅;以前一旦负载超过了1.5,响应就很慢了。效果很明显。
Tags: program,Specifiedcpu
由 dessun 发表于 2011-10-27 04:26:49
vi /etc/cron.daily/ccache.sh
放到服务器crond.daily下 ,每天自动删除
由 dessun 发表于 2011-10-19 07:24:37
if ($host ~* ^(.*?).domain.com$)
{
set $var_wupin_city $1;
set $var_wupin '1';
}
if ($host ~* ^qita.domain.com$)
{
set $var_wupin '0';
}
if (!-f $document_root/market/$var_wupin_city/index.htm)
{
set $var_wupin '0';
}
if ($var_wupin ~ '1')
{
rewrite ^/wu/$ /market/$var_wupin_city/index.htm last;
}
由 dessun 发表于 2011-10-19 06:41:19
thinkphp conf
Tags:
由 dessun 发表于 2011-10-19 06:35:11
静态地址重定向到带参数的动态地址
123cha.com" |! H, B5 Q6 V) q# Y
rewrite "^(.*)/service/(.*).html$" $1/service.php?sid=$2 permanent;
bbs.123cha.com5 ~) `5 ^/ u, L- x7 o+ [6 I; Y4 M
带参数的动态地址重定向到静态地址
123查!论坛# H& l2 b7 L- z4 B( z* k
if ($query_string ~* id=(.*)) {123查!论坛' Q. p e+ C1 M @. e
set $id $1;代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等2 c6 r4 O! L3 B
rewrite "^(.*)/article.asp$" $1/article/$id.htm last;7 H3 [3 O, _3 Y
}代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等8 I. z: D1 {1 J- v9 s
泛域名解析
代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等+ y3 r+ f k2 E: Q# `
server_name www.w3cgroup.com *.w3cgroup.com;
server_name_in_redirect off;
#设置默认root% S# |0 n! b1 z6 v! v* {& a
set $rootdir /usr/local/nginx/html/w3cgroup/;123cha.com3 k1 L' d* s0 D2 S5 r
#匹配三级域名代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等' d7 L' |3 c1 K3 [$ }+ # a
if ($host ~* ^([^.]+).([^.]+).([^.]+).([^.]+)$) {代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等: }; S4 B! F( Y( t, Y" G
set $rootdir /usr/local/nginx/html/w3cgroup/$2/$1;
#三级域名中有访问指定的目录则重定向到相应的二级域名下代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等( S. h$ O7 X% f6 W# B
rewrite "^.+upload/?(.*)$" http://upload.1xdccom/$1 permanent;bbs.123cha.com' ]6 W! n; ?9 |$ A8 j" s
rewrite "^.+ijc/?(.*)$" http://ijc.1xdc.com/$1 permanent;bbs.123cha.com, X" C+ a/ K! ^ k
break;123cha.com" n0 }+ D, J* c1 O. ]
}代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等; v/ i( v; F% y0 F. ?9 t2 p
#匹配二级域名123cha.com0 N7 D3 e( t, V- B; e
if ($host ~* ^([^.]+).([^.]+).([^.]+)$) {
set $rs1 $1;
}
#设置www时root
if ($rs1 ~* ^www$) {bbs.123cha.com6 D" o) g0 [# Y# R2 {
set $rootdir /usr/local/nginx/html/platform_ig/;代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等$ x. e. {8 g. H: |
#二级域名中有访问指定的目录则重定向到相应的二级域名下,注意,这里要使用lastbbs.123cha.com9 h5 ~* l1 |4 M: o, h
rewrite "^.+upload/?(.*)$" upload/$1 last;代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等: p; Q6 K' [. V$ x3 f" Q7 {7 H
rewrite "^.+ijc/?(.*)$" ijc/$1 last;
break;代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等" P6 ?' L+ b/ M% W8 [0 o
}代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等' k% ]; Y- M4 _7 Z3 q; N
#设置非www二级域名时root代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等' }; x$ j, W1 3 F5 o# |2 v- t
if ($rs1 !~* ^www$) {bbs.123cha.com: } E/ z( s; s: ~$ ?5 K
set $rootdir /usr/local/nginx/html/w3cgroup/$rs1;代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等$ v7 n/ E9 C' j# R* l
#二级域名中有访问指定的目录则重定向到相应的二级域名下bbs.123cha.com4 d2 }# i# S% n, C* D5 H& G
rewrite "^.+upload/?(.*)$" http://upload.1xdc.com/$1 permanent;
rewrite "^.+ijc/?(.*)$" http://ijc.1xdc.com/$1 permanent;
break;123cha.com$ A# F& V, n( }8 m) y& @: N- y
}
#应用root4 y5 i n2 k/ L4 v
root $rootdir;
index index.php index.html;代理服务器,ip查询,手机号,proxy,天气预报,火车时刻,身份证号码,飞机航班,新华字典查询等% J% U D5 q# v5 `) g8 V2 y$ K: k* m
error_page 404 http://$host/;
Tags:
由 dessun 发表于 2011-10-19 05:00:31
Nginx提供了很多内置的变量,如:
$arg_PARAMETER 这个变量包含在查询字符串时GET请求PARAMETER的值。
$args 这个变量等于请求行中的参数。
$binary_remote_addr 二进制码形式的客户端地址。
$body_bytes_sent 传送页面的字节数
$content_length 请求头中的Content-length字段。
$content_type 请求头中的Content-Type字段。
$cookie_COOKIE cookie COOKIE的值。
$document_root 当前请求在root指令中指定的值。
$document_uri 与$uri相同。
$host 请求中的主机头字段,如果请求中的主机头不可用,则为服务器处理请求的服务器名称。
$is_args 如果$args设置,值为"?",否则为""。
$limit_rate 这个变量可以限制连接速率。
$nginx_version 当前运行的nginx版本号。
$query_string 与$args相同。
$remote_addr 客户端的IP地址。
$remote_port 客户端的端口。
$remote_user 已经经过Auth Basic Module验证的用户名。
$request_filename 当前连接请求的文件路径,由root或alias指令与URI请求生成。
$request_body 这个变量(0.7.58+)包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有意义。
$request_body_file 客户端请求主体信息的临时文件名。
$request_completion 未知。
$request_method 这个变量是客户端请求的动作,通常为GET或POST。
包括0.8.20及之前的版本中,这个变量总为main request中的动作,如果当前请求是一个子请求,并不使用这个当前请求的动作。
$request_uri 这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。
$scheme 所用的协议,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_addr 服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指定地址并且使用bind参数。
$server_name 服务器名称。
$server_port 请求到达服务器的端口号。
$server_protocol 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$uri 请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。