-
2009-03-30
Discuz和织梦CMS,登陆注册链接,模板分页,模板数组循环的研究 - [tips]
1.在模板里header.html可以改,但是不靠谱,因为有些地方没有调用模板,所以去改配置:common.inc.php
先在common.inc.php文件中看到:
$link_login = $passport_url.$passport_login_url.(strpos($passport_login_url, '?') === FALSE ? '?' : '&').'forward='.$passport_forward;
于是在服务器上 bash# grep -R-l "passport_url" /opt/web/bbs.XXXX.com/*
查到字符在:/opt/web/bbs.XXXX.com/forumdata/cache/cache_settings.php文件中: 于是修改!注册也是一样的!改reaname=>""....
2.header.html里用户名显示问题,默认是在common.inc.php的$discuz_user定义的,这里可以改掉,但只是显示,没有意义,因为发帖和在线列表都是数据库里的原始ID。接着实验,还是在common.ini.php里,只要定义一个变量,然后去template/difalut/header.html里,就可以显示了,利用了smarty的模板原理
3.$postlist = [0]=>[a]="a"
[b]="b"
[1]=>[a]="a"
[b]="b"
模板里 <!--{loop $postlist $post}-->为:变量多维数组$postlist以每个键为$post循环,及:$post[a]=="a"4.在CMS中做环境设置(版本不同,设置地方不同,大体差不多):系统->系统基本参数->性能选项
开启分页标题,再开启长文章自动分页。
在模板中,要显示的地方,添加<div>:<div class="cupage" align="center">{dede:pagebreak/} </div>
最好能写个cupage的css,这样美观一点~~ 哈哈
编辑人员在编辑时,手动选择要分页的地方!(在文本编辑的地方有按键!让他们自己按!)
OVER
-
2009-03-26
Mysql:select * into outfile && load data infile 数据交换 - [mysql]
1.
LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作。为了将一个数据库的数据写入一个文件,使用SELECT ... INTO OUTFILE,为了将文件读回数据库,使用LOAD DATA INFILE。两个命令的FIELDS和LINES子句的语法是相同的。两个子句是可选的,但是如果指定两个,FIELDS必须在LINES之前。
mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table;2.
select * from tablename into outfile '/tmp/xxx.log';
这里用/tmp目录,因为mysql服务上不知道有没有权限写入,而且此句法只能在mysql服务器下生成文档,不能在本地,所以只有先放到/tmp下,再通过rsnyc同步,或者scp拷贝到本地
-
2009-03-26
如何提高mysql load data infile的速度 - [mysql]
测试数据2.5G,共有数据9427567条。用的mysql的large服务器的配置。
load一次需要大概10分钟左右。
建的表用的是MYISAM,调整了几个session的参数值SET SESSION BULK_INSERT_BUFFER_SIZE=256217728;
SET SESSION MYISAM_SORT_BUFFER_SIZE=256217728;运行结果如下
Query OK, 9427567 rows affected, 1558 warnings (3 min 55.21 sec)
Records: 9427567 Deleted: 0 Skipped: 0 Warnings: 0
google到的还可以set global KEY_BUFFER_SIZE=256217728;
alter table tablename disable keys;如何load数据里面带反斜杠(backslash)”\” 的数据
由于如果你没有指定FIELDS子句,则默认值为假设您写下如下语句时的值:
FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ‘\\’
所以,如果你的数据里面有反斜杠(backslash)”\”的时候,数据会出现被截断的问题。出现这种问题,只要写上如下的fields子句即可
FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ”如何load不同编码的数据
原来用的4.X的mysql,我是select INTO OUTFILE ,只后用iconv,或者其他软件来做。可以参考这里,但是由于这次数据大,用ultraedit等软件打开都要半天。好在新版的mysql可以增加一个新的参数
CHARACTER SET gbk
我的文本数据是GBK的编码,数据表是utf8的,用这种方法测试成功。
如何load的时候只insert特定的列
比如表里面有比元数据多的列。可以在load的时候指定要插入的字段名字。示例的代码如下:
LOAD DATA INFILE '~/data.txt'
INTO TABLE fb0505
CHARACTER SET gbk
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY ''
LINES TERMINATED BY '\n' STARTING BY ''
(seller_id,fb_type,fb_date,item_url);其中表fb0505里面还有一列是id。
-
2009-03-02
PHP Tips,留着以后备用(1) - [php]
<?php
//中文字符截取 1
$text = "牛逼牛逼牛逼的牛牛逼的逼哈哈哈";
$value = substr($text, 0, 18);
$value_length = strlen($value);
$value_count = 0;
for ($i = 0; $i < $value_length; $i++)
{
if (ord($value{$i}) > 127)
{
$value_count++;
}
}
if ($value_count % 2 != 0)
{
$value = substr($text, 0, $value_length - 1);
}
echo $value."<BR>";
//中文字符截取 2
function cut_str($msg,$cut_size,$charset="UTF-8",$suffix="...")
{
if($cut_size<=0) return $msg;
$i=1;$han=0;$eng=0;
while ($i <= strlen($msg)) {
if(ord($msg[($i-1)])>127) {
$han++;
if($charset=="UTF-8") {
$i=$i+3;
}else{
$i=$i+2;
}
}else{
$eng++;
$i=$i+1;
}
if(($han+$eng)==$cut_size) {
if($charset=="UTF-8") {
$cut_size = $eng + (int)$han*3;
}else{
$cut_size = $eng + (int)$han*2;
}
break;
}
}
for ($i=0;$i<$cut_size;$i++) {
$str .=$msg[$i];
}
return $str.$suffix;
}
//取得来访者的IP,包括代理服务器!
function iptype1 ()
{
if (getenv("HTTP_CLIENT_IP")) return getenv("HTTP_CLIENT_IP");
else return "none";
}
function iptype2 ()
{
if (getenv("HTTP_X_FORWARDED_FOR")) return getenv("HTTP_X_FORWARDED_FOR");
else return "none";
}
function iptype3 ()
{
if (getenv("REMOTE_ADDR")) return getenv("REMOTE_ADDR");
else return "none";
}
function ip()
{
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2 != "none" && $ip2 != "unknown") {
return $ip2;
}
elseif (isset($ip3) && $ip3 != "none" && $ip3 != "unknown") {
return $ip3;
}
else {
return "none";
}
}
echo ip();







