from :http://blog.xoyo.com/redblade/article/341344.shtml

Apache是运行在Linux操作系统上的头号Web服务器。很多小地方都可以用来调整Apache的性能,并降低它对系统资源的影响。其中一个就是调整内存使用率,当然达到这一目的可能还是需要花点功夫的。
例如,通过ps来确定httpd线程的内存使用率,可以输入下面的命令:
# ps -U apache -u apache u

USERPID %CPU %MEMVSZRSS TTYSTAT START TIME COMMAND
apache130670.05.3 149704 54504 ?SOct071:53 /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DAPACHE2
...

上面这段输出显示了单个httpd进程使用了50 MB的RSS(驻留集大小)内存(或者非交换物理内存),以及149 MB的VSZ(虚拟)内存。这当然在很大程度上取决于你在Apache里加载和运行的模块数量。这决不是一个固定的数字。由于这个数字里还包含了共享库包,所以不是100%的准确。我们可以认为RSS数字的一半是httpd线程真正使用的内存数,这可能还有点保守,但是离我们的目的已经非常接近了。

在本文里,我们假设每个httpd进程都在使用了27 MB内存。然后,你需要确定可以让httpd真正使用的内存数。根据运行在机器上的其他进程,你可能希望要求50%的物理内存都供Apache使用。在一个装有1GB内存的系统上,就有512MB的内存可以被划分为多个27MB的内存,也就是大约19个并发的httpd内存。有些人坚持认为每个httpd 线程“真正”使用大约5MB的内存,所以从理论上讲你可以把512MB的内存划分出102个并发进程供Apache使用(要记住的是,除非你的网站需要极其巨大的流量,否则这种情况是非常罕见的)。  
在默认状态下,Apache会分配最大256个并发客户端连接,或者256个进程(每一个都对应一个请求)。按照这种设置,一个流量巨大的网站会在顷刻间崩溃(即使你假设每个进程占用5MB内存,那也需要1.3GB的内存来满足请求的数量)。如果不采取其它措施,系统会通过硬盘来尝试使用交换空间以处理它无法在物理内存中完成的任务。

其他可以调整的项目包括KeepAlive、KeepAliveTimeout和MaxKeepAliveRequests等设置。可以放在httpd.conf文件里的推荐设置有:

ServerLimit 128MaxClients 128KeepAlive OnKeepAliveTimeout 2MaxKeepAliveRequests 100

通过将KeepAliveTimeout从15秒减到2秒,可以增加MaxClients命令;19太小,而128要好得多。通过减少进程存活的秒数,你可以在相同的时间内允许更多的连接。

当然,如果没有真正的测试在背后支持,数字就是毫无意义的,这就是ab的作用之所在。使用ab对Apache配置文件(MaxClients 等于 256、ServerLimit等于256、KeepAliveTimeout等于15)进行调整,使其能够满足1000个请求(100个连续请求并发产生)的调整方法如下。(在执行测试的时候要确保服务器上有一个终端打开以观察系统的负载。)
#./ab -n 1000 -c 100 -k http://yoursite.com/index.php

现在把上面的服务器设置改为更加保守的设置,重新启动Apache,试着再次测试(总是从远程计算机上进行,而不是本机)。
在这里的测试中,不同的设置导致执行所消耗的时间产生了一倍的差距(分别为27.8s和16.8s),但是负载的平均值为0.03和 0.30。这可能会使得你的网站变得稍慢,但是会确保它不会在高负载的情况下崩溃。还要记住的是,你将需要进行多次测试,以便取得一个平均值。

使用ab是测试调整Apache配置的一个极佳方法,应该在你每次做出影响性能的更改时使用它

posted @ 2009-06-24 11:45 小马歌 阅读(367) | 评论 (0)编辑 收藏
 
Linux + wine + 迅雷

拷贝c:\windows\system32\下的动态链接库msvcp60.dll和mfc42.dll到 ~/.wine/drive_c/windows/system32 下。然后wine迅雷就可以正常启动迅雷下载使用了。要注意的是下载文件的保存路径要点浏览然后再选择相应的保存路径,或者如此类似设置(z:\root \Desktop\)否则会提示错误的路径。

Everest Linux 0.4u1 + Wine 0.9.24 + 迅雷v5.6.1.292
测试了下,速度感觉和Windows下的没区别。
个人认为wine的比较完美

PS:如果你认为用迅雷下载会盗链,有损道德,请不要使用。本文不讨论此类道德问题。

 原文地址 http://www.linux-ren.org/modules/newbb/viewtopic.php?topic_id=3454&forum=21
posted @ 2009-06-22 18:32 小马歌 阅读(173) | 评论 (0)编辑 收藏
 
http://sourceforge.net/projects/mondrian/

多纬统计,相当方便。
posted @ 2009-06-22 18:19 小马歌 阅读(472) | 评论 (0)编辑 收藏
 
http://developers.facebook.com/thrift

/Files/xiaomage234/thrift-20070401.pdf

其他rpc对比:
SOAP. XML-based. Designed for web services via HTTP, excessive
XML parsing overhead.
 CORBA. Relatively comprehensive, debatably overdesigned
and heavyweight. Comparably cumbersome software installation.
 COM. Embraced mainly in Windows client softare. Not an
entirely open solution.
 Pillar. Lightweight and high-performance, but missing versioning
and abstraction.
 Protocol Buffers. Closed-source, owned by Google. Described
in Sawzall paper.
posted @ 2009-06-22 18:17 小马歌 阅读(276) | 评论 (0)编辑 收藏
 
姓  名:李彦宏
百度董事长兼CEO
财富榜:130亿
1972出生于山西阳泉
北京大学本科
1999年,李彦宏和徐勇回国创建了百度,一年后百度成为全球最大的中文搜索引擎技术公司。2003年第二季度,百度宣布全面盈利。目前,百度的竞价排名客户达3万余家
公司总部:北京
主要行业:搜索引擎
行业地位:全球最大的中文搜索引擎
姓  名:陈天桥
盛大网络公司 董事长兼CEO
财富榜:90亿
2003中国新经济年度人物”                            
1973出生于 浙江新昌
毕业院校:复旦大学    
1999年创办盛大网络公司
2001年,盛大先后代理运营了《传奇》、《新英雄门》、《疯狂坦克》等多款网络游戏。注册用户近六千万人 2003年在纳斯达克上市
盛大网络创办仅4年,财富从50万元的创业投资剧增12000倍  
姓  名:马化腾
腾讯公司CEO
财富榜:125亿 (2007胡润富豪榜 排名第50位 )
1971年10月出生于广东潮阳
1989.9至1993.7: 深圳大学计算机专业
1993.4至1998.10:润讯通信发展有限公司工程师
QQ 用户 3.4亿
姓  名:丁磊 (163 邮箱)
网易公司CEO
2006胡润IT富豪榜90亿元成为国内IT首富
1971年10月生于宁波
1997年6月创立网易公司(7m2)将网易从十几个人的私企发展到在美国公开上市的知名互联网技术企业。
靠网络起家的丁磊向浙江大学捐赠4000万美元,支持教育事业。
姓   名:马 云
阿里巴巴集团主席兼CEO
财富榜 : 50亿(中国IT十大富豪)
毕业院校:杭州师范大学外语系
1964年09月10日生于浙江杭州
1999年3月,以50万元创办阿里巴巴网站,会聚220个国家和地区的200多万注册商人会员,是全球国际贸易领域内最大的网上市场,是全球B2B电子商务的著名品牌。
2003年5月10日投资创办淘宝网,  C2C (个人对个人)截至2008年底,淘宝网注册会员超8000万人,
阿里巴巴于2007年11月6日在香港上市。
阿里巴巴的上市,造就了4900名人均身家过百万的富翁。
为了这一天,有人等待了12年,有人等待了8年,还有很多人没有等到这一天……
2005年8月5号百度的上市则创造了8位亿万富翁  50位千万富翁,240位百万富翁…这些富翁都是在百度公司工作四年以上的员工
(现在网上消费已成趋势,日本占97%,英国52%的成年人在网上买东西,都已养成习惯。在中国,只是刚刚开始,同时,蕴含着一个商机。)
什么是电子商务?是以电子为手段,以商务为主体,将原来的传统销售、购物渠道移到互联网上来,打破国家、地区、有形无形的壁垒,使生产企业达到全球化、网络化、无形化、个性化。
电子商务的特点:三 低:低投入、低成本、低价格
三 高: 高服务、高效益、高利润
在互联网时代,不变的只有改变。2003年,美国90%的大型企业通过网上交易,在全世界范围内,只有25%的交易通过互联网。

名人名言
江-泽-民:在亚太会议上说,电子商务代表了世界经济贸易发展的方向!
美国前总统克林顿说:信息产业革命是人类有史以来最大的一次产业革命,它将为我们提供千载难逢的机遇战!
胡-锦-涛主席在两会上的讲话:
大力推进市场对内外开放,加快要素是市场化,发展电子商务、连锁经营、物流配送等现代流通方式,促进商品和各种要素在全国范围自由流通和充分竞争,造就一个和谐的社会。
胡-锦-涛:大力发展电子商务是推进国民经济信息化的重要内容,在全球范围内,基于互联网的电子商务正以前所未有的速度迅猛发展,不仅改变了社会生产方式,而且对经济结构的调整,产生了极为重要的影响,成为新经济的增长点。
8848老总王俊涛说:如果错过互联网,与你擦肩而过的不仅是机会,而是整整一个时代。
比尔.盖茨:21世纪世界上只有两种生意,就是是拥有网站的企业和和将被收盘的生意。
               未来要么电子商务,要么无商可务。
阿里巴巴创始人马云在接受记者采访时讲到:互联网已经从“网民”“网友”时代进入“网商”时代,等你看清楚时已经晚了。
李嘉诚:互联网是一次新的商机,每一次新的机会到来,都会造就一批富翁。而每一批富翁的造就是:
当别人不明白的时候,他明白他在做什么;
当别人不理解的时候,他理解他在做什么,
当别人明白了,他富有了:当别人理解了,他成功了。
  今天跟E网合作,你最大限度能够失去什么?如果一个小时20元,每天上班8小时,一天的工资就是160元,一个月上20天班,一个月工资就是3600元;如果一个小时40元,一个月就是7200,这是非常好的单位。在E网好多老师封顶一天就是1万,请问E网是什么样的单位?
  在E网一天的收入就是在单位上班一个月20天干的,在单位20年要干的事情,在E网一年完成,多的19年到处去旅游,大家说好不好?在E网干两年,剩下的38年,有钱有闲好不好?
  反正每年都是打工,打工几年还是一场空,那我们就在E网拼一年试试!
什么是趋势?我引用李嘉诚的一段话:
当别人在骂人,我开始怀疑;  
当别人在怀疑,我开始行动;  
当别人在行动,我开始赚钱;  
当别人在赚钱,我的钱开始疯长!  
当一个新生事物出现,
只有5%的人知道时赶紧做, 这就是机会,
做早就是先机; 当有50%的人知道时,
你做个消费者就行了。
当超过50%时, 你看都不用去看了
需要机会,寻找项目的朋友!
posted @ 2009-06-22 18:14 小马歌 阅读(113) | 评论 (0)编辑 收藏
 
from : http://hi.baidu.com/sneidar/blog/item/9e26372671f9a4128a82a1f8.html

有关 PHP 和 MySQL 时区的一点总结
2008年06月19日 星期四 下午 04:39

由于暂时使用国外的空间,在我发布 Blog 的时候发现时间总是不对。依据我以前编写程序的经验,这是时区的问题。这个问题解决起来并不难,写下我的解决途径以便日后参考。

PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为 'Asia/Shanghai' 即可。但是通常共享虚拟主机本身没有修改 php.ini 权限。这个时候就应该在程序公共部分加入

ini_set('date.timezone','Asia/Shanghai');

动态修改 php.ini 的设置。之后可以测试一下时间是否正确:

var_dump(date());

如果服务器的本地时间是正确的,那么一般就能解决问题了。附,PHP 5.1 以上提供了专门的函数修改对应的时区:

date_default_timezone_set('Asia/Shanghai');

建议使用此函数,因为更通用一 些。对应 'Asia/Shanghai' 其他可以使用的大陆时区还有:Asia/Chongqing 、Asia/Shanghai 、Asia/Urumqi (依次为重庆,上海,乌鲁木齐);港台地区可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次为澳门,香港,台 北);还有新加坡:Asia/Singapore;其他可用的值是:Etc/GMT-8、Singapore、Hongkong、PRC;老外好像把北京 漏调了。

但是,在我修改成功 PHP 端的时区以后发现日期并没有正确的记录下来。这个时候我考虑是否是数据库的问题。果不其然,因为程序插入的函数并没有调用 PHP 的时间,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。这个时候就要考虑是否能修改 MySQL 方面的时区。

参考了 MySQL 的文档,发现一个可行的 SQL 语句为:

SET GLOBAL time_zone = '+8:00';

其中 '+8:00' 是东八区的表示方法,其他的市区依次类推。而我在数据库模型中插入改语句发现权限不够(该死的虚拟主机提供商)。接下来我调试了很多语句,比如:

DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR);

显示时区的 SQL 语句:

SHOW VARIABLES LIKE 'system_time_zone'

等等。而由于 MySQL 权限的限制并没有彻底的解决方案。我 Google 了下,发现老外这个有一个非常好的解决方案。但是他需要修改每条插入数据的 SQL 语句。这样的方案并不是非常的有效,一旦数据库时区改成正常,那么相应的 SQL 语句又要改回来。

而我考虑既然 PHP 端已经可以正确的解决时间的问题了。MySQL 数据库方面虽然可以使用相应的函数解决,但是如果日后迁移到别的主机环境又要改回来。而相应的字段是一个 TIMESTAMP 类型的,默认的值为 CURRECT_TIMESTAMP,当然是可以指定时间的。

那么我的做法就是让 PHP 插入当前正确的时间,这样虽然程序方面需要做相应的修改。不过日后配置修改起来只要修改一处就可以了。最后插入数据库的时间注意一下格式:

date('Y-m-d H:i:s')

这样就可以解决问题了。附,一些非常好的参考资料:

  1. http://www.modwest.com/help/kb6-256.html
  2. http://topic.csdn.net/t/20060503/07/4728521.html
  3. http://www.phpchina.com/5173/viewspace_5132.html
  4. http://www.phpx.com/pth110355.php

更新:由此 wiLdGoose 兄说他也碰到同样的问题,但是无法解决。结果经过种种的假设和判断以后,到最后发现原来是 Zend Studio 的时区配置问题(我狂汗ing)。看来除去运行环境,开发环境也是需要注意以下的。

posted @ 2009-06-10 10:39 小马歌 阅读(118) | 评论 (0)编辑 收藏
 
 1function get_page_content($url){
 2$url = eregi_replace('^http://', '', $url);
 3$temp = explode('/', $url);
 4$host = array_shift($temp);
 5$path = '/'.implode('/', $temp);
 6$temp = explode(':', $host);
 7$host = $temp[0];
 8$port = isset($temp[1]) ? $temp[1: 80;
 9$fp = @fsockopen($host, $port, &$errno, &$errstr, 30);
10if ($fp){
11@fputs($fp, “GET $path HTTP/1.1\r\nHost: $host\r\nAccept: */*\r\nReferer:$url\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\nConnection: Close\r\n\r\n”);
12}
13$Content = ”;
14while ($str = @fread($fp, 4096)){
15$Content .= $str;
16}
17@fclose($fp);
18//重定向
19if(preg_match(”/^HTTP\/\d.\d 301 Moved Permanently/is”,$Content)){
20if(preg_match(”/Location:(.*?)\r\n/is”,$Content,$murl)){
21return get_page_content($murl[1]);
22}
23}
24//读取内容
25if(preg_match(”/^HTTP\/\d.\d 200 OK/is”,$Content)){
26preg_match(”/Content-Type:(.*?)\r\n/is”,$Content,$murl);
27$contentType=trim($murl[1]);
28$Content=explode(”\r\n\r\n”,$Content,2);
29$Content=$Content[1];
30}
31return $Content;
32}
33
34
posted @ 2009-06-05 12:16 小马歌 阅读(861) | 评论 (0)编辑 收藏
 
不知道是什么原因导致服务器file_get_contents不能使用,fsockopen半残废。不是PHP版本原因,因为同版本换电脑可以,不是allow_url_fopen问题,几经认证。
错误提示:failed to open stream: HTTP request failed! 不是用户权限问题

为解释情况,先看两个小程序片段
复制内容到剪贴板
代码:
$fp = fsockopen("cplink.duozz.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs($fp,"GET /public/default/images/logo.jpg HTTP/1.0\r\n");
fputs($fp,"Host: cplink.duozz.com\r\n");
fputs($fp,"Connection: Close\r\n\r\n");
$tmp = "";
while (!feof($fp)) {
$tmp .= fgets($fp, 128);
}
fclose($fp);
}
var_dump($tmp);
上面是第一段,如果没错的话,上面的会输出一些二进制乱码,没错,图片直接打印是这样的。可是在我的一台正式服务器上却输出空。
经过一步步调试改为如下代码
复制内容到剪贴板
代码:
$fp = fsockopen("cplink.duozz.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /public/default/images/logo.jpg HTTP/1.0\r\n";
$out .= "Host: cplink.duozz.com\r\n";
$out .= "Connection: Close\r\n\r\n";

fputs($fp, $out);
$tmp = "";
while (!feof($fp)) {
$tmp .= fgets($fp, 128);
}
fclose($fp);
}
var_dump($tmp);
上面这段代码输出了我想要的内容。改动只是把fputs的内容先连成一个长字符串,一起提交。。为啥会有这个BUG没查出来。网上也有很多相同的难友

下面讲正题。
pub_httpdown.php 里恰恰是用的我讲的第一种方式,结果直接造成远程图片不能本地话
我通过改为第二中方式解决BUG。不过还是希望官方有高手能解释下为什么。
改过的pub_httpdown.php见附件

另外还有一个小BUG 此文件的SaveToText函数调用了一个并不存在的$this->SaveBinFile() 我觉得作者本意可能是要用$this->SaveToBin()所以也改了。
希望官方也讲一下。

from : http://bbs.linuxphp.org/thread-197-1-1.html
posted @ 2009-06-05 12:15 小马歌 阅读(2792) | 评论 (2)编辑 收藏
 
session_start()这个问题,我竟然用了4天来解决.其实网上很多解决的方法,论坛也好多人回答这类的问题,不过最后呢,我还是先在我朋友的电脑上运行php的代码,确认没有写错后,再通过朋友的php.ini来对照,找出不同的地方,然后修改才成功. 现在的状况是依然有警告提示Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent in C:\php\phpdesigner_output_tmp.php on line 2 不过,代码可以成功运行,$_SESSION的值可以传递到别的页面,那我就不再修改其他的(还没对照到的地方).最后一句感叹,一个人凭兴趣去写程序,真是困难重重!

  现在先说我自己的问题.我在网上找session_start()的问题的时候,有的帖子提到要修改session.save_path =c:\tmp 和session.cookie_path =/
这两个路径为c:\tmp 然后再添加一个文件夹.但我自己是问题是,session.cookie_path  的值应该是=/  惭愧的是我现在还不明白什么是这个值应该是默认路径吧.

  其实相关的session_start()的问题还有要将out.put_buffery=on 或者修改成4096 或者session_start()前面加ob_start();还有cache-limiter= ;空,还有apache的缓存是否有开等等,不过对我的问题也没有帮助而已.下面是我在找问题的答案的时候找到的一些关于session_start()的问题的总结,我本来想自己总结,现在就贴出这位兄弟的文章就是了(没有问过他,如果有一天作者觉得有异议,请联系我)http://cmpford.bokee.com/

session问题集锦

  对于PHP的session功能,始终找不到合适的答案,尤其是一些错误,还有一些没有错误的结果,最可怕的就是后者,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。

1.
错误提示
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent
分析及解决办法
这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。

2.
错误提示
Warning: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
分析及解决方法
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
session_save_path = c: emp
session.cookie_path = c: emp
然后在c:目录下建立一个temp目录,即可

3.
错误提示
Warning: Trying to destroy uninitialized session in
分析及解决方法
出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。

4.问题:怎么获得当前session的id值呢?
最简单的方法是:
echo SID;
你会发现的。

5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
注:此问题,会出PHP4.1.2中,更高版本,没有测试过。

6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。
答:最简单的方法是
session_start();
if(!session_registered(&apos;login&apos;) ││ $login != true) {
echo "你没有登陆";
exit;
}

7.问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
问题的程序片段:
session_start();
$ok = &apos;love you&apos;;
session_register(&apos;ok&apos;);
header("location : next.php");
?>

next.php
session_start();
echo $ok;
?>

解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
不过有解决的方法。如下所示
header("Location: next.php" ."?" . SID);
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。

8.session如何传数组
session_register(&apos;data&apos;);
$data=array(1,2,3,4);

方法是先注册后赋值

9.问题9:我是不是可以用像$HTTP_GET_VARS[&apos;**&apos;]方式来访问session值呢?

回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
$HTTP_SESSION_VARS
$_SESSION
例程:
session_start();
$username = &apos;stangly.wrong&apos;;
session_register(&apos;username&apos;);

echo $HTTP_SESSION_VARS[&apos;username&apos;];
echo &apos;
&apos;;
echo $_SESSION[&apos;username&apos;];
?>
请参照此例程修改符合您自己的程序。

问题10:session_unregister() 和 session_destroy() 有何区别?
session_unregister()函数主要作用是注消当前的一sion.(译自于php.net)

例程:
if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]);
}


以上,所述是一些新手经常遇到的问题。或许是详述不清,难免有误所在,请高手指点批评。

 

php中的session的配置

今天调试程序遇到了session的设置问题,网上这篇文章比较好,共拿来学习,并供大家参考。
转载自旅行论坛 http://www/lvxing.net


首先打开php.ini文件,找到session的部分:(分号后面的是注释)

[Session]
; Handler used to store/retrieve data.
session.save_handler = files   ;    这个是session的方式,默认的files就可以了,代表用文件储存

; Argument passed to save_handler.  In the case of files, this is the path  where data files are stored.
session.save_path = /tmp ;      这个是session的保存路径,比如你是c盘,那么默认就是c:/tmp, 所以如果出现“Warning: open(/tmpsess_cc8b04f146a1e0494bc464305da92ea1, O_RDWR)  failed”这样子的错误,你可以修改这个路径,或者在根目录下面建立一个tmp的文件夹

; Whether to use cookies.
session.use_cookies = 1 ;    sessionid的传递方式,默认是cookie,推荐使用

; Name of the session (used as cookie name).
session.name = PHPSESSID ;    sessionid的名称,保存在cookie里面的,要避免同名

; Initialize session on request startup.
session.auto_start = 0 ;    是否自动启动session,

posted @ 2009-06-02 18:52 小马歌 阅读(2175) | 评论 (0)编辑 收藏
 

from : http://blog.csdn.net/zhoucd_dl/archive/2008/01/16/2047094.aspx
首先,我只是个初学者,希望能与大家一起交流,下面的学习总结中有着很的疑惑,需要同仁的解答,另外也希望可以为大家一起分享mondrian
  联机分析处理(OLAP)的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理(OLTP)明显区分开来。
  当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
  这里我们单独说下OLAP. 联机分析处理(OLAP)的主要特点,是直接仿照用户的多角度思考模式,预先为用户组建多维的数据模型,在这里,维指的是用户的分析角度。例如对销售数据的分析,时间周期是一个维度,产品类别、分销渠道、地理分布、客户群类也分别是一个维度。一旦多维数据模型建立完成,用户可以快速地从各个分析角度获取数据,也能动态的在各个角度之间切换或者进行多角度综合分析,具有极大的分析灵活性。这也是联机分析处理在近年来被广泛关注的根本原因,它从设计理念和真正实现上都与旧有的管理信息系统有着本质的区别。
  其中我们现在学习的mondrian则是OLAP中的service位置.它负责将组装cube,分析MDX,以及提取数据并组成多维,可以说负责的是后台的数据处理.
  mondrian包含4层:表示层,计算层,聚集层,存储层.
  表示层:指最终呈现在用户显示器上的,以及与用户之间的交互,有许多方法来展现多维数据,包括数据透视表,饼,柱,线状图.
  计算层:分析,验证,执行MDX查询.
  聚集层:一个聚集指内存中一组计算值(cell),这些值通过维列来限制.计算层发送单元请求,如果请求不在缓存中,或者不能通过旋转聚集导出的话,聚集层向存储层发送请求.聚合层是一个数据缓冲层,从数据库来的单元数据,聚合后提供给计算层。聚合层的主要作用是提高系统的性能。
  存储层:提供聚集单元数据和维表的成员,这些层可以不在同一机子上,但是计算和聚集层必须是同一台机子.
  在学习mondrian中主要的是对配置文件schema,这里引用官方网站文档里面的例子.
   uniqueMembers="true"/>  uniqueMembers="true"/>
   uniqueMembers="false"/>  uniqueMembers="false"/>
   uniqueMembers="false"/>  uniqueMembers="false"/>
  
  
   aggregator="sum" formatString="#,###"/>  aggregator="sum" formatString="#,###"/>
   aggregator="sum" formatString="#,###.##"/>  aggregator="sum" formatString="#,###.##"/>
   formula="[Measures].[Store Sales]-[Measures].[Store Cost]">  formula="[Measures].[Store Sales]-[Measures].[Store Cost]">

  schema定义了一个多维数据库。包含了一个逻辑模型,而这个逻辑模型的目的是为了书写MDX语言的查询语句。这个逻辑模型实际上提供了这几个概念:Cubes,维度(Dimensions),层次(Hierarchies),级别(Levels),和成员(Members)。而schema文件就是编辑这个schema的一个xml文件。在这个文件中形成逻辑模型和数据库物理模型的对应。
  l Cubes. 一个Cube是一系列维度(Dimension)和度量(Measure)的集合区域。在Cube中,Dimension和Measure的共同地方就是共用一个事实表。这个Cubes中的属性有:name(Cubes的名字),caption(标题,你要在表示层显示的),cache(是否对Cubes对应的实表用mondrian进行存储,默认为 true),enabled(是布尔型的,如果是被激活,Cubes就执行,否则就不于理睬)里面有一个全局的  标签确定了所用的事实表的表名
  l Diminsion,他是一个层次(Hierarchies)的集合, 维度一般有其相对应的维度表.他的组成是由层次(Hierarchies)而层次(Hierarchies)又是有级别(Level)组成.其属性:name,type(有两个属性” Standard”和”Time”默认为Standard),caption,UsagePrefix(加前缀,消除歧义,有点模糊)
  l Hierarchy,你一定要指定其中的各种关系,如果没有指定,就默认Hierarchy里面装的是来自立方体中的真实表. 属性:name,hasAll(布尔型的,决定是否包含全部的成员member),AllMemberName(所有成员的名字,也就是总的tile,例如: AllMemberName=”全部产品”), alllevelname(所有级别的名字 ,很少用), allMemberCaption(例如: allMemberCaption=” 全部产品”这个是在表示层显示的内容). PrimaryKey(通过主键来确定成员,要是没他就默认**模糊中!) primaryKeyTable(描述主键的表),defaultMember,memberReaderClass
  (定义的类的名字一定要) caption.
  l Measure, 他就是我们要计算的数值,BI中要面对的主题,具体到页面上的显示的测量数值.
  属性:name,column(对应数据库中的某个字段,), formatString(显示的格式),aggregetor(我理解为计算的函数,例如; aggregator="count"), datatype,formatter(模糊),caption,visible(是否可见 布尔型).
  l Level,级别,他是组成Hierarchy的部分.属性非常多,并且是schema编写的关键.属性:name,table(用到的表),column,namecolumn, Oridinalcolumn(字段的顺序,只对Hierarchy中的最后一个级别Level有作用,如果没指定字段 就不会排序),parentColumn( 涉及到的上一级Hierarchy成员字段的名字) NullParentValue(看成没有上一级的Hierarchy的数值,代表为”null””0”),type,UniqueMember(是布尔型的,判断在上级中是否是唯一的,例如:zipcodes are unique across all states.Thefirstlevel\'s members are always unique.), levelType(决定这是否是一个有次序或者是时间关系的级别例如:YTD 是year-to-date), captionColumn,formatter,caption,HideMemberIf(概念模糊).可以看出level有很多的属性,所用功能也是比较强大的.
  MDX
  MDX是为了查询多维数据的,而SQL是为了查询关系数据库的。而Mondrian所涉及到的一些MDX概念、MDX语法以及系统定义的MDX函数和微软的MDX十分接近,差别微小。完全可以参考微软的帮助文档进行学习。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhoucd_dl/archive/2008/01/16/2047094.aspx

posted @ 2009-06-01 16:29 小马歌 阅读(447) | 评论 (0)编辑 收藏
仅列出标题
共95页: First 上一页 67 68 69 70 71 72 73 74 75 下一页 Last