1:Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件


$a=123;

function aa()
{
Global $a;  //如果不把$a定义为global变量,函数体内是不能访问$a的
echo $a;
}
aa();


总结:在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,


$glpbal $a;
$a=123;

function f()
{
  echo $a;   //错误,
}

//再看看下面一例


function f()
{
   global $a;
   $a=123;
}

f();
echo $a;  //正确,可以使用


2:global问题解析:
question:我在config.inc.php中定义了一些变量($a),在别的文件中函数外部 include("config.inc.php"),函数内部需要使用这些变量$a,如果没有声明的话,echo $a是打印不出来任何东西的。因此声明global $a,但是有很多函数和很多变量,总不能不断重复的这样声明吧?有什么好的解决办法,请指点。
answer1:先在config.inc.php里定义常量:define(常量名,常量值)
再在其他需要用到的地方require 'config.inc.php',
然后就能在这个文件里直接使用这个常量了。
answer2:我也有个办法,就是定义数组,如$x[a],$x,那样就只要声明global $x一个了。
answer3:我试了你的这个方法,不行啊。
answer4:改你的php.ini文件。

设置global 为 on
http://kiwi.csie.chu.edu.tw/blog/archives/23
$this->assertEquals("xiangdong",$this->search->searchblog());
$this->assertFalse($this->search->searchblog());
$this->assertRegExp("/xiang/",$this->search->searchblog());
group by
分组
通用数据库具有基于表的特定列对数据进行分析的能力。
可按照在 GROUP BY 子句中定义的组对行进行分组。以其最简单的形式,组由称为分组列的列组成。 SELECT 子句中的列名必须为分组列或列函数。列函数对于 GROUP BY 子句定义的每个组各返回一个结果。下列示例产生一个列出每个部门编号的最高薪水的结果:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
此语句产生下列结果:
DEPT MAXIMUM
------ ---------
10 22959.20
15 20659.80
20 18357.50
38 18006.00
42 18352.80
51 21150.00
66 21000.00
84 19818.00
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
将 WHERE 子句与 GROUP BY 子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。例如:
SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM
FROM EMPLOYEE
WHERE HIREDATE > '1979-01-01'
GROUP BY WORKDEPT, EDLEVEL
ORDER BY WORKDEPT, EDLEVEL

结果为:
WORKDEPT EDLEVEL MAXIMUM
-------- ------- -----------
D11 17 18270.00
D21 15 27380.00
D21 16 36170.00
D21 17 28760.00
E11 12 15340.00
E21 14 26150.00
注意:在 SELECT 语句中指定的每个列名也在 GROUP BY 子句中提到。未在这两个地方提到的列名将产生错误。GROUP BY 子句对 WORKDEPT 和 EDLEVEL 的每个唯一组合各返回一行。
在 GROUP BY 子句之后使用 HAVING 子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 HAVING 子句。 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较:
该组的另一个特性
例如:
HAVING AVG(SALARY) > 2 * MIN(SALARY)
常数
例如:
HAVING AVG(SALARY) > 20000
例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:
SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM
FROM EMPLOYEE
GROUP BY WORKDEPT
HAVING COUNT(*) > 4
ORDER BY WORKDEPT
此语句产生下列结果:
WORKDEPT MAXIMUM MINIMUM
-------- ----------- -----------
D11 32250.00 18270.00
D21 36170.00 17250.00
E11 29750.00 15340.00
有可能(虽然很少见)查询有 HAVING 子句但没有 GROUP BY 子句。在此情况下,DB2 将整个表看作一个组。因为该表被看作是单个组,所以最多可以有一个结果行。如果 HAVING 条件对整个表为真,则返回选择的结果(该结果必须整个由列函数组成);否则不返回任何行。

官方讲是按组操作,

或者好理解点就是按类操作..

看个例子你就明白了,表如下:

ID 名称 仓库 数量
01 西瓜 一号 10
02 西瓜 二号 30
03 大米 一号 30
04 苹果 一号 40
05 苹果 二号 45
06 苹果 三号 5


Select name,Sun(price) From 表 Group By name


以上SQL将返回各种商品的总数量,而不管是哪个仓库的..

结果:

西瓜,40
大米,30
苹果,90
<html>
<body bgcolor="green">
<font color=black size=5>发布最新新闻消息!</font>
<form methoud="get" action="index.asp">
<font color=red size=3>
1.发布时间:<input type="text" name="postdate" size=8 onfocus="hint()"><br>
2.新闻标题:<input type="text" name="title" size=60 ><br>
3.新闻内容:<br><textarea name="content" cols="82" rows="15">
输入内容:
</textarea> </font>
<br>

<input type="submit" value="确定发布">
<input type="reset"  value="取消发布">
</form>
<script language="vbscript">
function hint
msgbox"发布时间的输入格式为@@@@-@@-@@"
end function

</script>

</html>



<form action="charu1.asp" method="post">
请搜索你想要删除的标题:<input name="name" value="3">
<input type="submit" value="提交">
<%
set rs=server.createobject("adodb.recordset")
rs.open "select * from s3","dsn=q3;" %>

<%rs.pagesize=request("name")%>
<%rs.absolutepage=request("name")
%>

<%for i=1 to request("name")
%>
<tr><td><%=rs("title")%></td>
<td><%=rs("content")%></td>
<td<%=rs("postdate")%><td></tr>
<br>
<%rs.movenext
next%>



<%set cn=server.createobject("adodb.connection")
cn.open "dsn=q3;"
  
strsql="delete from s3 where  id= '"&request("name")&"' "

      
%>








<%
rs.close
set rs=nothing
cn.close
set cn=nothing
%>
http://www.guogoul.com/2008/09/15/raid/

http://www.docin.com/p-777759021.html
raid5:
1)最多容错量:1
2)RAID5的大小为(n-1)*单个磁盘大小即(3-1)*5GB。
3)经测试3块挂了一块还是可以用的。
想问一下,空格有多少种?以前换行的\r\n和\r和\n就把我折磨得够呛."\s"匹配的是哪一种空格?
\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格:
\s 空白字符:[ \t\n\x0B\f\r] //这个市重点!

\t 制表符 ('\u0009')  
\n 新行(换行)符 ('\u000A')  
\r 回车符 ('\u000D')  
\f 换页符 ('\u000C')  
\a 报警 (bell) 符 ('\u0007')  
\e 转义符 ('\u001B')  
\cx 对应于 x 的控制符  

<?php
$str = "d        dj";
echo preg_replace("#\s+#is","-",$str);
?>


#相当于/
\s指制表符空格符等
+表示至少一个或多个
i表示不区分大小写


1. 什么是正则表达式:
正则表达式(regular e­xpression)描述了一种字符串匹配的模式,是一种描述一段文本模式的方法,可以用来检查一个串是否含有某种子串、
将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。例如:字符串"wuleying"匹配正则表达式"wuleying",
它也可以匹配正则表达式"wu"、"le"等等。除了精确匹配字符外,还可以用特殊字符来来指定表达示的元意(列如:.、*、+等,一会儿讲到)
2. 正则表达式的历史

正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts
这两位神经生理学家研究出一种数学方式来描述这些神经网络。1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts
早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。
正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后,发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson 是 Unix 的主要发明人。
正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。如他们所说,剩下的就是众所周知的历史了。
从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。

3. PHP支持两种风格的正则表达式语法:POSIX与PERL。
3.1 POSIX 扩展正则表达式函数
ereg_replace -- 替换正则表达式
ereg -- 正则表达式匹配
eregi_replace -- 不区分大小写替换正则表达式
eregi -- 不区分大小写的正则表达式匹配
split -- 用正则表达式将字符串分割到数组中
spliti --  用正则表达式不区分大小写将字符串分割到数组中
sql_regcase --  产生用于不区分大小的匹配的正则表达式
3.2 Perl 兼容正则表达式函数
preg_grep --  返回与模式匹配的数组单元
preg_match_all -- 进行全局正则表达式匹配
preg_match -- 进行正则表达式匹配
preg_quote -- 转义正则表达式字符
preg_replace_callback -- 用回调函数执行正则表达式的搜索和替换
preg_replace -- 执行正则表达式的搜索和替换
preg_split -- 用正则表达式分割字符串

 3.1 普通字符

  由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
阅读全文
看到这个标题,大家可能要说我没常识,php根本不支持多线程啊,没错,php本身是不支持多线程,但是别忘了php的好搭档,apache和linux可是支持的,呵呵,lamp才是最佳组合,还在使用win服务器的现在知道为什么要用linux吧?好久没在phpchina说教了,今天水一帖,写个简单的代码演示下如何借助shell脚本实现多线程。

先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码: 复制PHP内容到剪贴板
PHP代码:

<?php
for ($i=0;$i<10;$i++) {
    echo $i;
    sleep(10);
}
?>


在看下shell脚本的代码,非常简单 复制内容到剪贴板
代码:


#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
        php -q ./thread.php &
done

注意到在请求php代码的那行有一个&符号吗,这个是关键,不加的话是不能进行多线程的,&表示讲服务推送到后台执行,因此,在shell的每次的循环中不必等php的代码全部执行完在请求下一个文件,而是同时进行的,这样就实现了多线程,下面运行下shell看下效果,这里你将看到10个test.php进程再跑,再利用linux的定时器,定时请求这个shell,在处理一些需要多线程的任务,例如,批量下载时,非常好用!
结果出现:

0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999

第一,培养对互联网的产业理解能力和市场的感觉。

  有些人天生具有良好的商业感觉,但是商业感觉并不是不可学习的,经过多年的浸润,是可以培养出良好商业感觉的。

  为了培养理解互联网行业的能力,可以经常阅读互联网的相关行业新闻,培养对互联网趋势的感觉。除了培养对互联网趋势的感觉外,还有很重要的是要培养商业的感觉,对于大多数网站来说,不是做公益事业,而需要盈利来支撑网站的发展。经常浏览受用户欢迎的网站,看看哪些新技术,哪些新应用,也许能发现新的商业潜力的产品,找到与现有市场产品能够形成差别化的新产品。

  灵感从来都不是只有天才才有的,是需要积累才能诞生的。

  第二,增强网站产品可行性评估能力。

  比如网站产品的成功可能性概率有多高?网站定位的市场优势有多大?投入实施需要花费多少资源?什么时候能够收回成本?面对未来的事情,从来都没有确定的答案,评估就是能够可提高成功的概率。可在实际过程中,形成一个可执行的模板文档。

  第三, 培养研究用户需求的能力。 阅读全文
int()字段类型长度 问题

一直以来我定义int数据类型时填写的长度都是为11,只知道int类型的数据可表达的范围:
有符号值:-2147683648 到 2147683647
无符号值:0 到 4294967295
小弟想问下,定义了int数据类型后,后面填写的长度具体有什么用?
如果长度为4,请问最大的数是多少?如果是自增的可以是多少条?
答:最大为11位,最少为4位,不够在前面补空格
这个可选的宽度规格说明是用于在数值显示时,对某些值的宽度短于该列宽度的值进行左填补显示的,而不是为了限制在该列中存储值的宽度,也 不是为了限制那些超过该列指定宽度的值的可被显示的数字位数。注意,如果在一个整型列中存储一个超过显示宽度的更大值时,当 mysql 为某些复杂的联结(join)生成临时表时,你可能会遇到问题,因为在这种情况下,mysql 信任地认为所有的值均适合原始的列宽度。

而int本身就是4个字节 bigint是8个字节 所以说int(X)的含义就是 int决定数据存储的字节 X表示期望数据的列宽度

在SQL语句中int代表你要创建字段的类型,int代表整型,11代表字段的长度。

这个代表显示宽度
整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。
1. 安装:http://www.imagemagick.org下载tar源码包

引用

#tar -jxvf ImageMagick-6.4.3-4.tar.gz
#cd ImageMagick-6.4.3-4
#./configure –enable-shared –enable-lzw –without-perl –with-modules
#make
#make install


不指定安装路径--prefix,就默认将可执行程序安装到/usr/local/bin/目录下(该目录默认在path中)。

2. 测试:
1). 版本察看
简单地执行:

引用
convert -version

如果看到下面的信息说明安装已经成功

引用
Version: ImageMagick 6.4.3 2008-08-27 Q16 OpenMP http://www.imagemagick.org
Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC



2). 压缩图片.
当前目录下有一个文件名字叫hill.png,执行

引用
convert -sample 25%x25% hill.png  hill_t.png

将缩小hill.png为原来的25%,生成新的文件名叫hill_t.png

如果出现如下错误提示:

引用
convert: error while loading shared libraries: libMagickCore.so.1: cannot open shared object file: No such file or directory



将so所在的路径加入到LD_LIBRARY_PATH(前面的安装方式默认安装so到/usr/local/lib目录下)

引用
  export LD_LIBRARY_PATH=/usr/local/lib



当执行jpg图片缩放的时候,
3). 压缩jpg图片

引用
convert -sample 25%x25% water.png  water_t.png

系统提示:

引用
convert: no decode delegate for this image format `water.jpg'.
convert: missing an image filename `t_water.jpg'.



II. 安装 MagickWand For PHP

假设这一步之前,你已经将php安装好,目录为/usr/local/php。然后去 http://www.magickwand.org/下载 MagickWandForPHP-1.0.7.tar.gz。


引用
#/usr/local/php/bin/phpize  // phpize安装php5.2.6默认安装好了,这一步生成configure文件


如果这一步提示没有autoconf,则需要在你机器上安装autoconf软件,我用Ubuntu,就用apt-get安装,没在上面浪费很多时间。


引用
#./configure --prefix=/usr/local/magickwand --enable-shared --with-php-config=/usr/local/php/bin/php-config --with-magickwand=/usr/local/imagemagick



./configure命令的--with-php-config参数指定php-config所在路径,php-config随php一起安装,如果php安装在/usr/local/php/,那么php-config位于/usr/local/php/bin/


引用
#make
#make install


如果命令运行无误,就会在php目录下编译成功magickwand.so文件(在我这里位于/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613)

III. 修改php.ini的配置
将magickwand.so加入到php.ini中,如extension="/usr/local/php/lib/magickwand.so",重启Apache即可。

运行phpinfo()看看是否有magickwand的信息
ALTER TABLE myIndex ADD INDEX name_city_age (vc_Name(10),vc_City,i_Age);--注意了,建表时,vc_Name长度为50,这里为什么用10呢?因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。

    执行T-SQL时,MySQL无须扫描任何记录就到找到唯一的记录!!

    肯定有人要问了,如果分别在vc_Name,vc_City,i_Age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率一样吧?嘿嘿,大不一样,远远低于我们的组合索引~~虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。

    建立这样的组合索引,其实是相当于分别建立了
        vc_Name,vc_City,i_Age
        vc_Name,vc_City
        vc_Name
    这样的三个组合索引!为什么没有vc_City,i_Age等这样的组合索引呢?这是因为mysql组合索引"最左前缀"的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这三列的查询都会用到该组合索引,下面的几个T-SQL会用到:
    SELECT * FROM myIndex WHREE vc_Name="erquan" AND vc_City="郑州"
    SELECT * FROM myIndex WHREE vc_Name="erquan"
而下面几个则不会用到:
    SELECT * FROM myIndex WHREE i_Age=20 AND vc_City="郑州"
    SELECT * FROM myIndex WHREE vc_City="郑州"

unique索引:
[code]
ALTER TABLE tablename ADD UNIQUE [索引的名字]
alter table Tbl_User ADD UNIQUE INDEX (FQQ);
[/code]
假如我们创建了一个testIndex表:
CREATE TABLE testIndex(i_testID INT NOT NULL,vc_Name VARCHAR(16) NOT NULL);

我们随机向里面插入了1000条记录,其中有一条
    i_testID    vc_Name
      555    erquan
    
在查找vc_Name="erquan"的记录
SELECT * FROM testIndex WHERE vc_Name='erquan';
时,如果在vc_Name上已经建立了索引,MySql无须任何扫描,即准确可找到该记录!相反,MySql会扫描所有记录,即要查询1000次啊~~可以索引将查询速度提高100倍。

  一、索引分单列索引和组合索引

   单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。
   组合索引:即一个索包含多个列。阅读全文
网路安装 :pkg_add -r gnome2
光盘安装:光盘启动菜单>packages>选项cd安装> 然后选择gnone2.22.gz
安装以后的中文化可以,到/usr/ports/chinese/auto-i10n-cn/
要注意两点。
1、不过版本要在5.0.37之后

手册上介绍:(SHOW PROFILES and SHOW PROFILE were added in MySQL 5.0.37. )
Important
Please note that the SHOW PROFILE and SHOW PROFILES functionality is part of the MySQL 5.0 Community Server only.
2、变量profiling是用户变量,每次都得重新启用。
以下是我做的一些实验。数据很明显,就不多解释了。
先进入某个库中然后运行:show profiling;如下:
mysql> use test
Database changed
mysql> set profiling=1;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+----------------+

| Tables_in_test |
+----------------+

| bag_item |
| bag_user |
| score |
| t |
+----------------+

4 rows in set (0.03 sec)

mysql> select count(*) from t;
+----------+

| count(*) |
+----------+

| 2097152 |
+----------+

1 row in set (0.74 sec)阅读全文
问题提出:为何多线程?  答:为了问题得到有效解决.
什么问题:由于rpc僵死,ps aux|gep rpc  rpc进程还在,但是它已经死掉失效了,但系统也无法知道,我们只好去调用rpc里面的一个函数看返回结果。
问:为何不用一个进程去判断而要用多线程?
答:一个进程掉用rpc里面的一个函数,在rpc死后如果调用,调用者无法退出终端,也死在那儿了.
问:为何不用多进程?
答:多进程不太熟悉,尝试失败。
最后:选择了多线程。。。
多线程的大致流程:
一个线程睡觉,一个干事情,干不动事情,睡觉的线程杀了干事情的线程。。。^_^(有趣)

#!/bin/sh

state=`/usr/local/bin/test_rpc_server_62 afeng@afeng.sina.net`;

if [ "$state" != "OK" ]; then
ps auxwww |grep rpc |awk '{ print "kill -9 " $2 }' |sh
if [ -e /usr/local/etc/rc.d/entplatform_rpcserver.sh ]; then
sh /usr/local/etc/rc.d/entplatform_rpcserver.sh
else
ps auxwww |grep rpc |awk '{ print "kill -9 " $2 }' |sh
cat /etc/rc.local |grep rpc |sh
fi
echo "rpc bad, restart.";
else
echo "rpc ok.";
fi


shell如,一行搞定:
grep '|'`date +20%y-%m-%d`' ALL  FUNISHED! |' /data0/daemon_log/popularity/addScoreOnline.log  >>  /data0/daemon_log/popularity/addScoreOnlineSh.log



shell字符串相连:


A=EDIT
N=1
B=$A$N
echo $B



c程序:阅读全文
http://www.robotsky.com/KongZhi/QianRS/2008-03-05/12047239162248.html
http://www.ibm.com/developerworks/cn/opensource/os-php-apachesolr/
http://www.ibm.com/developerworks/cn/web/wa-lucene2/?ca=wa-t10
http://www.ibm.com/developerworks/cn/edu/os-dw-os-apachelucene.html
分页: 238/272 第一页 上页 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 下页 最后页 [ 显示模式: 摘要 | 列表 ]