理处言语然自 » 2009 » 一月

证严法师的静思语100个福送给您

001 心美,看什麽都顺眼 
002 福,来自一颗懂得布施的心 
003 讲话要温和轻柔,态度要谦诚亲切 
004 孝顺要及时,行善也要及时 
005 站在半路,比走到目标,更辛苦 
006 多原谅别人,多得福,把量放大,福气大 
007 心中有爱,才会人见人爱 
008 幸福不在得到多,而在计较少 
009 把握当下,就是用心 
010 待人退一步,爱人宽一步,在人生道中就会活得很快乐 
011 要得到别人讚叹,就得先讚叹别人 
012 最有力量的菩萨,就是我们的手脑 
013 不断发挥生命功能,才是活着的人生 
014 听到好话,要如海绵遇水,牢牢吸住 
015 不要总是要求别人给我什麽,要想我能为别人做什麽 
016 帮助别人,其实就是在帮助自己 
017 不要只看到别人外在的污点,却看不到自己内心的垃圾 
018 生活有朝气,活得畅畅快快,工作讲求效率做得踏踏实实 
019 以爱心待人,以磊落的心胸接物,则人生到处充满了真善美 
020 稻穗结得越饱满,越往下垂,一个人越有成就,越有谦冲的胸襟 
021 孝首重在顺. 要体贴亲心. 声色柔顺. 切不可不耐与嫌烦 
022 人生能被人需要. 能够有份功能. 为人付出. 才是最幸福的人生 
023 欣赏他人. 就是庄严自己 
024 [...]

俄罗斯将开发国家操作系统

俄罗斯媒体报道,俄罗斯政府计划开发一个全国性的操作系统(Google翻译), 目的是减少对国外软件的依赖。俄罗斯的计划是基于Linux,预计会产生广泛的影响。微软的系统作为推荐也将参与到整个进程。中国政府就曾通过投资开发一 个全国性的Linux操作系统,成功降低了微软的许可费。

未来可能会有更多国家利用Linux发行版作为与微软讨价还价的筹码。

轻轻松松过春节

据医院门诊统计,每年春节之后,很多人出现“新年综合征”。其临床表现有以下六种。

不断变化的表情WordPress

 

Si te gusta personalizar tu sitio una de las posibilidades es cambiar los emoticonos por defecto que vienen con WordPress , hacerlo es muy sencillo .如果您喜欢自定义您的网站的可能性之一是要更改默认的表情附带WordPress的,使它非常简单。
Hay muchas colecciones por ahí de smileys (emoticonos) que puedes descargar e instalar en tu WordPress para dar a tu sitio un toque especial y distinto.有很多有收藏的笑脸(表情) ,你可以下载并安装在您的WordPress的,让您的网站有点特殊和差别。
 
Para conseguirlo solo tienes [...]

WordPress子目录Rewrite的404问题

  这些天有个问题一直困扰着我,由于我的WordPress是放在网站的根目录下,因此我建立的一些子目录跑一些其他的应用,我发现这些应用被WordPress的.htaccess文件的RewriteRule所干扰,我费了好大劲修改.htaccess文件,使得子目录的文件的RewriteRule可以工作正常,却发现调用子目录的应用总是返回404状态,但是内容却是正常的。
  其实,如果建立一个子目录放Discuz论坛,则论坛的RewriteRule也会被干扰,这个问题实在令人困惑,特别是返回404状态后,所有文件将不会被搜索引擎所收录。
  经过一番调试和修改,我发现了一个很怪异的方法可以解决这个问题,就是在子目录的PHP文件中加入下面这一行代码:
  header(“Status: 200 OK”);
  之后我使用一些HTTP Status测试工具测试,该目录和文件就不再返回404状态了,而是返回200状态,之后我会观察一下该子目录在搜索引擎的收录情况,估计应该也会恢复正常了。WordPress的某些特性实在是令人奇怪,搞不懂为什么会是这样。
原文:
  英文版:WordPress Mod Rewrite Make Subdirectory 404 Error

WordPress.tv

作者Matt 。
  今天,我们已经正式启动WordPress.tv ,您的WordPress的一切事物视觉资源。  在WordPress.tv上面,你会看到为WordPress的自我安装和WordPress.com以帮助您的博客快速且无争议各种视频教程。我们已经剔除了一些基础性事情-现在您可以看到的是什么未来轮廓。只要给我们的留下建议,让我们知道您希望看到增加些什么。 
WordPress.tv现在的也是找到所有的可惊心画面WordCamp是浮动的网路没有起点的地方。见到你错过的一些介绍要点,并及时披露一些幕后行动工作。我们称之为WordCampTV 。 
您还可以找到幻灯片所作的介绍WordPress的资源,再加上交互采访我做过与媒体和博客。 
我希望您能考虑WordPress.tv不仅是支持资源,而且是发生在那里令人流连忘返,跟上所有怪异善良上发生WordPress的集散地。对新鲜的内容和更新调整定期的WordPress.tv博客。更多的工作已经开始展开上路了。
原文:WordPress.tv
By Matt. Filed under WordCamp.

Today we’ve switched on WordPress.tv, your visual resource for all things WordPress.

On WordPress.tv, you’ll find tutorials for both WordPress self-installs and WordPress.com to help you get blogging fast and hassle-free. We’ve kicked things off with the basics — now you can shape what comes [...]

感谢插件开发者日

感谢插件开发者日
作者:Matt
WordPress的本身架构很简单-这就是使他的大多用户使用各种各样的插件(和主题)在各种可供wp被大量选用。 据统计WordPress的博客,平均安装约5插件(我用了9个插件)!今天,我们刚刚有超过了4000插件可以在我们的插件目录中。 (这也是可嵌入到个人的WordPress的2.7或以上。 ) 
我宣布1月28日为正式“感谢插件开发者”日。为了庆祝请查看您使用的和喜欢的插件,请访问作者的网站,找到自己的联系方式,并给他们留下一个便条感谢他们。 (或捐赠他们! )查找中的链接插件目录“作者的主页” ,并直接捐赠,如果他们已经指定一个PayPal地址。 
谢谢那些个曾经写了WordPress插件并受到热捧、喜欢的作者,迎来下一个4000 。
原文:
Thank a Plugin Developer Day
By Matt. Filed under Development.

WordPress by itself is very simple — what makes it compelling for most of its users is the wide array of plugins (and themes) available for WP. The average WordPress blog has about 5 plugins installed! Today we just passed 4,000 plugins available [...]

日本一机长在飞机起降时用数码相机拍照

核心提示:日本全日空集团旗下的螺旋桨飞机航运公司的一名机长在飞机即将起飞、着陆时,用数码相机从驾驶舱拍摄机外风景被曝光。该航空公司正商讨停止机长职务,给予惩戒处分。

三胞胎兄弟共庆81岁生日 一模一样妻子难辨

 来源: 现代快报(南京) 网友评论 10 条 点击查看

 

三胞胎兄弟
  1月21日,英国同卵三胞胎兄弟爱德瓦尔·列维林、摩根·列维林和伊沃尔·列维林兄弟迎来了他们的81岁生日。据悉,他们是英国在世的“最长寿同卵三胞胎兄弟”,由于相貌几乎一模一样,他们一生中已经多次被人弄混身份,就连他们的妻子也曾将丈夫认错,险些闹出笑话。
  降生 在小镇引发轰动
  现年81岁的爱德瓦尔、摩根和伊沃尔是英国威尔士地区朗达谷镇的同卵三胞胎兄弟。1928年1月21日,兄弟三人降生在一个矿工家庭。他们的父亲丹尼尔是一名矿工,母亲艾米则是一名家庭主妇。兄弟三人出生时的相貌一模一样,总重量达7.71公斤。他们的降生立即在小镇引发了轰动,每天都有许多好奇的人涌到家中来看望三胞胎兄弟。
  恋爱 被当成花花公子
  就这样,兄弟三人成了朗达谷镇家喻户晓的名人,人们都亲切地将他们称为“朗达三胞胎”。三兄弟长大后,个个英俊帅气。三兄弟恋爱期间,由于相貌几乎完全一样,邻居还以为同一个人每天和不同的女孩出去约会,结果一度对他们十分反感,把他们当作那种花花公子。直到有一天三兄弟带着各自的女友一同出现时,邻居们才恍然大悟。
  错认 误将小叔当丈夫
  在他们的一生中,已经无数次地被人认错。有一次,连摩根的妻子帕米拉也将小叔子爱德瓦尔误当成了自己的丈夫。摩根回忆说:“记得刚结婚的时候,有一次我的妻子帕米拉竟将爱德瓦尔误当成了我,她和爱德瓦尔交谈了半天后,才终于意识到他不是我。不过后来相处久了,她们都不会再搞错我们的身份了,毕竟我们有一些只有妻子才能察觉的细微差别。”
  庆生 长寿只因兄弟情
  1月21日,三胞胎兄弟迎来了他们的81岁生日,当天晚上,他们的7个子女和12个孙子孙女全都从英国各地赶来,为他们举办了一个热闹的生日派对。
  据悉,兄弟三人是英国在世的“最长寿同卵三胞胎兄弟”。三人均称,他们的“长寿秘诀”,正是彼此之间深厚的兄弟情。摩根说:“我们现在仍然和小时候一样亲密,这使得我们彼此都保持了年轻活力。”伊沃尔也说:“家人对我们而言非常重要,我们一有机会就要聚一下,尽管我们越来越老,但没有什么能改变我们。”老三爱德瓦尔说:“我们现在都很健康,并期待能一起庆祝90岁生日!”(旺旺)

apache2 限制并发连接数

apache2 限制并发连接数可以达到多种效果,首先请下载并安装:mod-cband
  mod-cband下载地址:
   http://cband.linux.pl/
  tar zxvf 文件名
cd 文件夹名
./configure –with-apxs/Apache目录/bin/apxs
make
make install
  然后,检查apache的配置文件夹httpd.conf是否有这一行,如果没有,添加
  LoadModule cband_module modules/mod_cband.so
  再在httpd.conf任意位置加入
  CBandRandomPulse On
  然后,配置虚拟主机,在虚拟主机处加入
  CBandSpeed 1024 10 30
  CBandSpeed 的部份是指所有總連線速率最大為1024kbps,每秒最多只能有10個連線,Total的連線數最大為30。
  另外,其它的应用:
  Example 1 :
ServerName www.21nw.com   
ServerAdmin admin@21nw.com  
DocumentRoot /var/www
CBandSpeed 1024 10 30
CBandRemoteSpeed 20kb/s  3 3
CBandSpeed 的部份是指所有總連線速率最大為1024kbps,每秒最多只能有10個連線,Total的連線數最大為30。  
CBandRemoteSpeed是限制每一個獨立的連線速率最大為20kbps,後面的 3 3 還不太清楚含义?  
設定好之後就可以重開 Apache 來測試一下 ~ 我放了一個 5mb 的檔案下載,嗯,果然傳輸速度會慢慢被限制在 20 k 左右
Example 2.
ServerName www.21nw.com   
ServerAdmin admin@21nw.com   
DocumentRoot /var/www
CBandLimit [...]

美挑起汇率之争,奥巴马为何致电胡锦涛急欲灭火?

文/金笔头

据台湾“中央社”报道,专门报道华府内幕消息的《尼尔森报道》27日称,在美国财政部长盖特纳的中国操控汇率说引发争议后,美国总统奥巴马上周末致电中国国家主席胡锦涛,试图平息风波。(《环球网》2009-01-28)
这场风波的起因,是盖特纳日前在一份书面资料中,对参议院财政委员会议员表示,奥巴马相信中国“操控”汇率。按照盖特纳的逻辑,中国自去年7月人民币停止升值以来,其兑美元汇率几乎毫无变动,这在市场一片混乱之中,似乎只有通过“操控”才做得到,况且中国拥有庞大的外汇储备,确实有能力这么做。这就好比古人断案,愚蠢的县令往往将杀人越货者与藏有宝刀人相提并论,真是欲加之罪,何患无词。
众所周知,世界金融危机的始俑者正是美国人自己,这在2008年底前先后召开G20全球金融峰会与亚太经合组织利马峰会上,己形成世界共识。正是发端于美国华尔街的次贷危机“导火索”点燃了世界金融危机,作为经济外向度很高的中国,同样也是这场灾难的受害者与重灾区,出口受阻,经济下滑,已充分证明这一点。而作为奥巴马政府重量级人物的盖特纳,非但不认真从自身问题上找诱发原因、作自我批评,反而企图将世界经济陷入困境的祸水引向中国,其背后的险恶用心值得警惕。
事实上,早在美国前总统小布什当政期间,所谓的中国“操控说”就曾喧嚣多时,但理智的布什政府还是在大量事实面前拒绝把中国列入“货币操纵者”。可盖特纳此番重弹中国“操控说”老调,说穿了,无非是为重拾或助长贸易保护主义寻找借口。因为按照美国某些“精英们”的如意算盘,只要逼迫中国人民币持续升值,不但可以进一步压缩中国出口空间,还可以借机向中国输出通货紧缩,让中国变相为美国金融危机“埋单”,这种“害人”不一定“利己”的梦话,理所当然受到中国政府的坚决反对,我国商务部与央行已先后发表声明与言论,对此进行了无情的驳斥与坚决的回击。
实际上,市场经济条件下的中国与美国关系,就像是一对“连体婴儿”,你中有我,我中有你,谁也离不开谁,妄图使用贸易保护主义“大棒”驱赶别国商品,伤及的不单单是中国,也包括美国在内的西方国家,更何况中国应对危机的信心并非凭空而来,正如正在欧盟访问的温总理所云:“首先,我们的金融基本稳定和健康;第二,我们国内的内部需求很大;第三,我们采取了正确的扩大内需的政策。”有了这三大信心“支撑点”,完全可以相信,中国经济的复苏指日可待。如果有谁反其道而行之,断不可能在“唱衰中国”中捞到半点好处,这就叫什么是“一荣俱荣,一损俱损”。
谁不信,市场的反应也许更有说服力,据说就在盖特纳的“操控说”一出笼,外汇市场立刻出现了美国国债被大量抛售、价格下滑的场面,这虽不可能是中国暗中所为,但正如外电所评论的,这容易让人联想到,如果美国新一届政府在货币问题上对中国施展强硬外交,中国很可能会用抛售美国国债予以还击。尽管中国最终不一定会这样做,但即使是中国停止购买美国债券,也足令美国脆弱的财政体系地动山摇,因为当前华盛顿的预算赤字仍在扩大,需要外界购买债券来维持开销,所以盖特纳无端的指责中国操作汇率,不仅无助于抵御金融危机,也不利于促进全球经济健康稳定发展。
亡羊补牢,犹未为晚。幸运的是奥巴马还算聪明,他与胡锦涛主席的通话意在平息中美汇率风波,努力消除盖特纳信口雌黄的负面影响。历史经验证明,中美双方惟有维持稳固的正面关系,才有希望通过合作与对话,共克时艰,度过难关,并带动全球尽快走出金融危机的阴影。
新闻背景:美媒称奥巴马致电胡锦涛欲平息中美汇率风波 

PHP连接mysql网页出现乱码

有的时候PHP连接mysql数据库里网页会出现乱码情况,一般的MySQL 字符集: UTF-8 Unicode (utf8),MySQL 连接校对相应的也就是utf8_general_ci,网站使用utf8编码的好处也就是不管世界各地的人谁访问网站,一般都不会出现乱码的情况,但如果在phpmyadmin上面新建数据库的时候没有选择utf8_general_ci,数据库默认是latin1_swedish_ci,所以在首先在phpmyadmin里面看到的中文录入信息就是乱码,所以一定要把数据库的信息默认改成utf8_general_ci,当php连接的时候,可以在数据库连接文件里设定总的网页默认语言,
mysql_query(“set names ‘utf8′”),也可以在分页里设置mysql_query(“set names ‘utf8′”),但必须是在数据库连接后使用,$conn = mysql_connect(“localhost”,”root”,””);mysql_query(“set names ‘utf8″);//这就是指定数据库字符集,一般放在连接数据库后面就可以了。
页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv=”Content-Type” content=”text/html; charset=”XXX” />来告诉浏览器网页采用了什么编码,目前中文网站开发中主要用的是GB2312和UTF-8两种编码。

Linux解压rar文件内容全部乱码的处理

原Windows rar压缩的文件,Linux系统下解压后打开里边的文件,内容全部乱码。

  之所以出现乱码是因为所压缩的文件中,有的文件是以中文命名。而在windows下中文的编码一般为gbk,而linux下中文的编码一般为utf8,所以在windows下正常打开的文件,到linux下很可能会出现乱码。

文件的切分split和结合工具cat 介绍

可能我们遇到这种情况,有时文件比较大,想上传到服务器上,但由于服务器管理员为了安全考虑,把上传空间作了限制,比如只能上传20M的文件,如果我们文件的体积在100M的,有时就是压缩也不能满足服务器上传的限制。这时我们就要考虑切分文件了,把100M的文件,切分成若干份,然后传到服务器上。切分后的每个文件都是原文件的组成部份。如果要获得整个完整的文件,我们就需要文件的结合工具。

禁用U盘的四种方法

方法一,BIOS设置法(快刀斩乱麻法)
  进入BIOS设置,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Controller”和“USB 2.0 Contr01ler”选项的属性设置为“Disableed”,即可禁用USB接口。最后别忘记给BIOS设置上一个密码,这样他人就无法通过修改注册表解“锁”上述设备了。
    注意:这个方法是完全禁止了USB接口,也就是说各种USB接口的设备均不能用了,当然也包括了U盘和移动盘。由于此发过于霸道,请慎用。
方法二,禁止闪盘或移动硬盘的启动(适用于Windows XP/2000/2003)
  打开注册表编辑器,依次展开如下分支

美国总统奥巴马就职演说

今天,我们聚集在这里,是因为我选择用希望来战胜恐惧,用团结来战胜冲突与分歧。今天,我们来到这里将结束悲戚和错误的承诺,抛弃指责和教条主义这些扼杀我们政治的东西。我们仍然是一个年轻的国家,但现在应该摒弃充满孩子气的行为,重申我们不朽的精神;选择我们更好的历史;宏扬那些珍贵而且高尚的理念,并将这一代一代地传递下去。上帝认为天下众生皆平等,众生皆自由,而且都应该拥有追求幸福的机会。

北电网络公司申请破产保护

曾经是加拿大IT行业旗舰公司的北电网络本周二和周三分别在美国特拉华州和加拿大安大略省法院破产法庭申请破产保护。这使该公司成为本次金融危机以来在北美倒下的首家著名的高技术企业。北电网络表示,公司还将在欧洲申请类似的破产保护。北电网络公司是在即将支付1.07亿美元的债券利息的前一天做出这一决定的。该公司表示,这一过程将使其能够处理其成本和债务负担,重组业务运营并收紧其战略重心。

PHP5 之 __set()和__get() 函数

class TestMagicFun{
     public $name = ”;
     public $email = ”;
}
$testObj = new TestMagicFun();
$testObj->name = ’simple’;
$testObj->email = ‘abc@gmail.com’;
$testObj->address = ‘earth china’;
下面的代码在php4,php5中运行都无问题,而在实际的工作中,我们可能不想使用者对未声明的属性进行赋值,此时PHP4就无能为力了,还好在PHP5中有__set(),__get()这样的魔法方法可以用。
我们可以对上面的类进行一下改造
class TestMagicFun{
     public $name = ”;
     public $email = ”;
     
     private function __set($property,$value)
     {
         // 在此处做一些特殊的处理
         print “not defined {$property}”;
     }
     
     private function __get($property)
     { 
          // 在此处做一些特殊的处理
         print “not defined {$property}”;
     }
}
然后再初始化一个对像
$testObj = new TestMagicFun();
$testObj->name = ’simple’;
$testObj->email = ‘abc@gmail.com’;
$testObj->address = ‘earth china’;

PHP 5.0 中的对象重载技术研究

一、简介

  很幸运,PHP 5.0中引入了对象重载技术。本文将探讨对于方法__call(),__set()以及__get()进行重载的可能性。在对重载理论作简单介绍后,我们将通过两个例子直奔主题:第一例,实现持续存储类;第二例,找到一种实现动态的getter/setter的方法。
  二、什么是对象重载?
  在PHP中谈到对象重载时,我们要区别两种类型:
  ·方法重载
  ·属性重载
   在方法重载的情况下,我们要定义一个魔术般的方法__call(),它将实现一个在相应类中对未定义方法的笼统调用。只有当你想存取类中未定义的方法 时,这种笼统方法才会被调用。在没有方法重载的情况下,下面的例子将导致PHP显示一条致命错误信息:Call to undefined method ThisWillFail::bar() in/some/directory/example.php on line 9并流产程序的执行:

<?php
 class ThisWillFail {
  public function foo() {
   return “Hello World!”;
  }
 }
 $class = new ThisWillFail;
 $class->bar();
?>

  借助方法重载的帮助,代码能够捕获到这种调用且能够体面地给以处理。
   属性重载与方法重载差不多。这种情况下,类把读/写操作重定向(亦可称代理)到类的属性,这些属性在类中没有显式定义。这里的专门方法是__set() 和__get()。依赖于错误报告等级,PHP翻译器通常在存取一个未定义的属性时,或者发出一个通知,或者推迟一下并潜在地定义这个变量。而如果使用属 性重载,翻译器却可以在设置一个未定义的属性时调用__set(),而在存取一个未定义的属性值时调用__get()。
综上所述,利用重载技术可以实现在象用PHP这样的动态语言进行时软件开发时间的大大缩短。
  理论介绍至此,下面分析具体编码。
  三、持续性存储类举例
  下列代码,通过使用属性重载技术,用少于50行的PHP代码实现了上面所提到的持续性存储类。术语persistable意味着类可以从一个数据结构中描述一个元素,并保持与底端存储系统的同步。用编码的解释就是,外部代码可以使用类来实现从一个数据库表中选定一行。这样,在程序运行时,可以直接存取类的属性来操纵该行中的元素(读/取)。在脚本结束时,PHP将负责把更新的行数据回送到数据库中去。
  精心研读下面代码将有助于你理解什么是属性重载。

<?php
 //装入PEAR的 <a href=”http://pear.php.net/package/DB/”>DB package</a>
 require_once “DB.php”;
 class Persistable {
  private $data = array();
  private $table = “users”;
  public function __construct($user) {
   $this->dbh = DB::Connect(“MySQL://user:password@localhost/database”);
   $query = “SELECT id, name, email, country FROM ” .
   $this->table . ” WHERE name = [...]

Header函数的使用

  标头 (header) 是服务器以 HTTP 协义传 HTML 资料到瀏览器前所送出的字串,在标头
与 HTML 文件之间尚需空一行分隔。有关 HTTP 的详细说明,可以参 RFC 2068 官方文件
(http://www.w3.org/Protocols/rfc2068/rfc2068)。在 PHP 中送回 HTML 资料前,需先
传完所有的标头。
  注意: 传统的标头一定包含下面三种标头之一,并只能出现一次。
Content-Type: xxxx/yyyy
Location: xxxx:yyyy/zzzz
Status: nnn xxxxxx
  在新的多型标头规格 (Multipart MIME) 方可以出现二次以上。
使用范例
范例一: 本例使瀏览器重定向到 PHP 的官方网站。
Header(“Location: http://www.php.net“); 
exit;
>?
范例二: 要使用者每次都能得到最新的资料,而不是 Proxy 或 cache 中的资料,可以使用下列的标头
header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . “GMT”);
header(“Cache-Control: no-cache, must-revalidate”);
header(“Pragma: no-cache”);
>?
范例三: 让使用者的瀏览器出现找不到档案的信息。
header(“Status: 404 Not [...]

在PHP中实现进程间通讯

  本文将讨论在PHP4环境下如何使用进程间通讯机制——IPC(Inter-Process-Communication)。本文讨论的软件环境是linux+php4.0.4或更高版本。首先,我们假设你已经装好了PHP4和UNIX, 为了使得php4可以使用共享内存和信号量,必须在编译php4程序时激活shmop和sysvsem这两个扩展模块。
  实现方法:在PHP设定(configure)时加入如下选项。
–enable-shmop –enable-sysvsem

这样就使得你的PHP系统可以处理相关的IPC函数了。

IPC是什么?

  IPC (Inter-process communication) 是一个Unix标准通讯机制,它提供了使得在同一台主机不同进程之间可以互相通讯的方法。基本的IPC处理机制有3种:它们分别是共享内存、信号量和消息队列。本文中我们主要讨论共享内存和信号量的使用。关于消息队列,笔者在不久的将来还会专门介绍。

在PHP中使用共享内存段

  在不同的处理进程之间使用共享内存是一个实现不同进程之间相互通讯的好方法。如果你在一个进程中向所共享的内存写入一段信息,那么所有其他的进程也可以看到这段被写入的数据。非常方便。在PHP中有了共享内存的帮助,你可以实现不同进程在运行同一段PHP脚本时返回不同的结果。或实现对PHP同时运行数量的实时查询等等。

  共享内存允许两个或者多个进程共享一给定的存储区。因为数据不需要在客户机和服务器之间复制,所以这是最快的一种IPC。使用共享内存的唯一窍门是多个进程对一给定存储区的同步存取。

如何建立一个共享内存段呢?下面的代码可以帮你建立共享内存。

$shm_id = shmop_open($key, $mode, $perm, $size);

  注意,每个共享内存段都有一个唯一的ID, 在PHP中,shmop_open会把建立好的共享内存段的ID返回,这里我们用$shm_id记录它。而$key是一个我们逻辑上表示共享内存段的Key值。不同进程只要选择同一个Key id就可以共享同一段存储段。习惯上我们用一个串(类似文件名一样的东西)的散列值作为key id. $mode指明了共享内存段的使用方式。这里由于是新建,因此值为’c’ –取create之意。如果你是访问已经建立过的共享内存那么请用’a’,– 取access之意。$perm参数定义了访问的权限,8进制,关于权限定义请看UNIX文件系统帮助。$size定义了共享内存的大小。尽管有点象fopen(文件处理)你可不要当它同文件处理一样。后面的描述你将看到着一点。

例如:

$shm_id = shmop_open(0xff3, “c”, 0644, 100);

这里我们打开了一个共享内存段 键值0xff3 –rw-r—r—格式,大小为100字节。

如果需要访问已有的共享内存段,你必须在调用shmop_open中设第3、4个参数为0。

IPC工作状态的查询

  在Unix下,你可以用一个命令行程序ipcs查询系统所有的IPC资源状态。不过有些系统要求需要超级用户方能执行。下图是一段ipcs的运行结果。

 

 

  上图中系统显示了4个共享内存段,注意其中第4个键值为0×00000ff3的就是我们刚刚运行过的PHP程序所创建的。关于ipcs的用法请参考UNIX用户手册。

如何释放共享内存呢

  释放共享内存的办法是调用PHP指令:shmop_delete($id)

shmop_delete($id);

$id 就是你调用shmop_open所存的shmop_op的返回值。还有一个办法就是用UNIX的管理指令:

ipcrm id, id就是你用ipcs看到的ID.和你程序中的$id不一样。不过要小心,如果你用ipcrm直接删除共享内存段那么有可能导致其他不知道这一情况的进程在引用这个已经不复存在的共享内存器时出现一些不可预测的错误(往往结果不妙)。

如何使用(读写)共享内存呢

  使用如下所示函数向共享内存写入数据

int shmop_write (int shmid, string data, int offset)

  其中shmid是用shmop_open返回的句柄。$Data变量存放了要存放的数据。$offset描述了写入从共享内存的开始第一个字节的位置(以0开始)。

读取操作是:

string shmop_read (int shmid, int start, int count)

  同样,指明$shmid,开始偏移量(以0开始)、总读取数量。返回结果串。这样,你就可以把共享内存段当作是一个字节数组。读几个再写几个,想干嘛就干嘛,十分方便。

多进程问题的考虑

  现在,在单独的一个PHP进程中读写、创建、删除共享内存方面上你应该没有问题了。但是,显然实际运行中不可能只是一个PHP进程在运行中。如果在多个进程的情况下你还是沿用单个进程的处理方法,你一定会碰到问题 —- 著名的并行和互斥问题。比如说有2个进程同时需要对同一段内存进行读写。当两个进程同时执行写入操作时,你将得到一个错误的数据,因为该段内存将之可能是最后执行的进程的内容,甚至是由2个进程写入的数据轮流随机出现的一段混合的四不象。这显然是不能接受的。为了解决这个问题,我们必须引入互斥机制。互斥机制在很多操作系统的教材上都有专门讲述,这里不多重复。实现互斥机制的最简单办法就是使用信号灯。信号量是另外一种进程间通讯(IPC)的方式,它同其他IPC机构(管道、FIFO、消息队列)不同。它是一个记数器,用于控制多进程对共享数据的存储。同样的是你可以用ipcs和ipcrm实现对信号灯使用状态的查询和对其实现删除操作。在PHP中你可以用下列函数创建一个新的信号量并返回操作该信号量的句柄。如果该key指向的信号量已经存在,sem_get直接返回操作该信号量的句柄。

int sem_get (int key [, int max_acquire [, int perm]])

  $max_acquire 指明同时最多可以用几个进程进入该信号而不必等待该信号被释放(也就是最大同时处理某一资源的进程数目,一般该值均为一)。$perm指明了访问权限。

  一旦你成功的拥有了一个信号量,你对它所能做的只有2种:请求、释放。当你执行释放操作时, 系统将把该信号值减一。如果小于0那就还设为0。而当你执行请求操作时,系统将把该信号值加一,如果该值大于设定的最大值那么系统将挂起你的处理进程直到其他进程释放到小于最大值为止。一般情况下最大值设为1,这样一来当一个进程获得请求时其他后面的进程只能等待它退出互斥区后释放信号量才能进入该互斥区并同时设为独占方式。这样的信号量常称为双态信号量。当然,如果初值是任意一个正数就表明有多少个共享资源单位可供共享应用。

申请、释放操作的PHP格式如下:

int sem_acquire [...]

对分类操作的业务逻辑封装

<?php
/* 名称: 对分类操作的业务逻辑封装
  *
  * 作者: 帅的像人渣  QQ: 1191391   E-mail: netcat2@21cn.com
  *
  * 完成日期: 2003-12-18 13:33
  *
  * 说明: 本类中引用的其它类(DB、Table、Item)均未提供,所以本类只能做个参考,不能直接应用
  *       不是本人小气不提供其它类,实在是因为那些都是一两年前写的类,很烂。怕大家看后对大
  *       造成误导. 在此发表这个类,只希望大家能从中学到一些程序设计的方法。
  *       授人以鱼不如授人以渔~
  * 
  * 特点:
  *       采用递归调用的方法,对分类数据只需一次数据库查询可生成树状结构。 无限递归层次(视机器堆栈而定)
  *       
  * 数据库定义: 
  *             ID          smallint unsigned  primary    #如果数据量很大可用int
  *             ParentID    smallint unsigned  index      #如果数据量很大可用int, 请索引此字段
  *                                                       #如果为根分类,则ParentID = 0
  *                                                       
  *             RootID      smallint unsigned  index      #如果数据量很大可用int, 请索引此字段
  *                                                       #如果是根分类则RootID = 0, 否则RootID = 最上层的父分类ID
  *             CategoryName varchar(n)                   #此大小自定
  *             如需有其它字段定义附在后面
 
  * 注意事项:
  *           不要试图直接调用本类,除非你有和我定义那另外那几个类相对应的接口, 否则不会成功
  *           在合适的地方定义 DBTABLE_CATEGORY 这个常量,使其指向你的分类数据表名字
  *
  * 程序构架:
  *              ├─基础类   <!– 完成底层数据库操作、数据抽象、语言、模板、异常、杂项等)操作 –>
  *                 │  
  *                 │  
  *                 └─业务逻辑层(此类所处层次)   <!– 利用基础类中数据操作、数据抽象等类根据表现层传递的参数完成数据处理,并返回数据或操作结果 –>
  *                     │
  *                     │
  *                     └───表现层(用户界面)   <!– 利用业务逻辑层将取得的数据或操作数据的结果通过基础类中的界面等类进行显示 –>
  */
 
  define(‘DBTABLE_CATEGORY’, ‘xxx’);
 
  class Category_Logic
  {
    var $KernelRef  = NULL;             //系统核心的引用
    var $tblObj     = NULL;             //包含当前分类数据 Table 类的实例
 
    var $_CurrentItem   = NULL;             //包含当前分类数据 TItem类的实例
 
    var $CategoryID     = 0;                //当前分类ID,如果没有当前分类此项为 0 
 
    //—————————————————————————
    //private   array GetNodeData(array $Data, int $ParentNode)
    //          根据一颗指定根的并且以兄弟双亲法表示的树和当前分类的ID,返回当前分类在整个分类表中所处的位置
    //
    // @param: $Data          2维数组  Array(
    //                                          Array(
    //                                                  ’ID’            => 分类ID,
    //                                                  ’ParentID’      => 父分类ID,
    //                                                  ’RootID’        => 根分类ID,
    //                                                  ’CategoryName’  => 分类名称,
    //                                               ),
    //                                          ……
    //                                      );
    //                        表示的一颗树
    //
    // @param: $ParentNode    父分类ID, [...]

PHP搜索引擎技术核心揭密

这是一篇精彩的编程教学文章,不但详细地剖析了 搜索引擎的原理,也提供了笔者自己对使用PHP编制搜索引擎的一些思路。整篇文章深入浅出,相信无论是高手还是菜鸟,都能从中得到不少的启发。

php中实现多线程

作者: 帅的像人渣 
加入时间: 2004-02-24 
下面是我的一些做法, 已经实验过. 确实可以的.
我们知道PHP本身是不支持多线程的, 但是我们的WEB服务器是支持多线程的.
也就是说可以同时让多人一起访问. 这也是我在PHP中实现多线程的基础.
假设我们现在运行的是a.php这个文件. 但是我在程序中又请求WEB服务器运行另一个b.php
那么这两个文件将是同时执行的. 
(PS: 一个链接请求发送之后, WEB服务器就会执行它, 而不管客户端是否已经退出)
有些时候, 我们想运行的不是另一个文件, 而是本文件中的一部分代码.该怎么办呢?
其实可是通过参数来控制a.php来运行哪一段程序.
下面看一个例子:
//a.php

PHP代码:
    function runThread()
    {
        $fp = fsockopen(‘localhost’, 80, $errno, $errmsg);
    
        fputs($fp, “GET /a.php?act=b\r\n\r\n”);        //这里的第二个参数是HTTP协议中规定的请求头
                                //不明白的请看RFC中的定义
       
        fclose($fp);
    }
    function a()
    {
        $fp = fopen(‘result_a.log’, ‘w’);
        fputs($fp, ‘Set in ‘ . Date(‘h:i:s’, time()) . (double)microtime() . “\r\n”);
     
        fclose($fp);        
    }

    function b()

    {

        $fp = fopen(‘result_b.log’, ‘w’);

        fputs($fp, ‘Set in ‘ . Date(‘h:i:s’, time()) . (double)microtime() . “\r\n”);

        

        fclose($fp);        

    }

    if(!isset($_GET['act'])) $_GET['act'] = ‘a’;

    

    if($_GET['act'] == ‘a’)

    {

        runThread();

        a();

    }
    else if($_GET['act'] [...]

很全的XML 资料下载

尽管是很老的东西,有些链已经断了,但是可以把它当作索引
[zz] http://www.xml.org.cn
资料下载[2004-08-28最后更新]
注:
(1)本站提供的所有软件和资料仅供本站成员的学习和研究使用,严禁用于商业目的!
(2)下面的链接均为本地下载。
(3)鉴于下列下载链接时常会发生变动, 因此在向好友推荐资料时,请尽量使用http://bbs.xml.org.cn/resource.asp。 
(4)如果直接下载不了,请用FlashGet下载. 
* 阅读超星格式时,请用本站提供的超星浏览器(下载地址为:http://download.xml.org.cn/SSR372.exe)观看。如被要求输入用户名密码,直接选择“取消”就可以了
如果下载不了,请用FTP软件,登陆 ftp://ftp2.xml.org.cn 用户名密码都是 w3c
OWL Web本体语言概述 推荐标准(OWL Web Ontology Language Overview 中文版)
RDF入门 推荐标准(RDF Primer 中文版)
[E-Book]Oreilly.Content.Syndication.With.RSS(感谢bingzhou01上传)
XML手册(第四版)超清晰版(感谢adf7810上传)
[E-BOOK]Addison.Wesley.XQuery.From.The.Experts.A.Guide.To.The.W3C.XML.Query.Language(CHM)(感谢 orangebench 上传)
[E-BOOK]Sams.XQuery.Kick.Start(CHM)(感谢 orangebench 上传)
[E-BOOK]Sams.XPath.Navigating.XML.With.XPath.1.0.And.2.0.Kick.Start(CHM)(感谢 orangebench 上传)
[参考手册]网页制作完全手册(含DHTML,HTML,CSS等参考手册)(CHM)(感谢 BADBOY炜 上传)
[教程]XML指南(CHM)(感谢 BADBOY炜 上传)
[E-Book]O’ Reilly JAVA and SOAP
[E-Book]XPath, XLink, XPointer, and XML: A Practical Guide to Web Hyperlinking and Transclusion
[E-Book]VBScript参考手册
[E-Book]Java编程思想(英文第三版)(HTML格式 + 代码)
[E-Book]Java编程思想(中文版)(CHM格式)
[E-Book]Java编程思想(中文版)(PDF格式)
[E-Book]XSLT源码参考
[E-Book]XML, XSLT, Java and JSP - A Case Study
[E-Book]XML Bible
[E-Book]XML手册(第四版)(前9章)(感谢 adf7810 站友上传)
[E-Book]O’Reilly XSLT Cookbook(CHM)(感谢xunil站友上传)
[E-Book] javascript 中文参考手册(CHM)
[E-Book]MySQL中文参考手册(CHM)
[E-Book]O’Reilly SVG Essentials(PDF)
[E-Book]DOM中文参考手册(CHM)
[E-Book]XSLT Quickly - a concise user’s guide and turorial.(PDF)
[E-Book]XML in a Nutshell 第二版(CHM)
[E-Book]DHTML中文参考手册(HTML)
[E-Book]O’Reilly DocBook: The Definitive Guide(CHM)
[E-Book]搞懂XML、SOAP、BizTalk(感谢Betteronly提供)
[E-Book]XML编程技术大全(感谢Betteronly提供)
[E-Book]DREAMWEAVER与XML综合应用(感谢 无双公子 提供)
[E-Book]O’Reilly XSLT(感谢 无双公子 提供)
[E-Book]WML向XHTML的迁移(感谢zjh提供)
[E-Book]编程高手成长之路2 - XML/JSP网页编程教程
[E-Book]ASP.NET/XML深入编程技术(超星格式)
[E-Book]XML编程 - 使用VB和ASP(超星格式)
[E-Book]Java & XML 第二版
[E-Book]XHTML Guide(感谢penetrator提供)
[E-Book]O’Reilly - Java and XML Binding(感谢kxxxx001提供)
[E-Book]O’Reilly - Java and XML (感谢kxxxx001提供)
[E-Book]O’Reilly - Java and XSLT
[E-Book]O’Reilly - Learning XML
[E-Book]O’Reilly - Learning WML and WMLScript
[E-Book]O’Reilly - Programming Web Services with SOAP
[E-Book]Practical Transformation Using XSLT & XPath
XSmile浏览器0.9 beta版的源码(Java,共11MB)(感谢xhaopuj提供)
[教程]Thinking in VML(感谢diegor提供)
[E-Book]XML学习指南(感谢Betteronly提供)
[E-Book]XML解决方案开发实务(感谢Betteronly提供)
[E-Book]实战XML第二版(感谢Betteronly提供)
[E-Book]XML轻松学习手册(感谢Betteronly提供)
[E-Book]XML学习手册第二版(感谢Betteronly提供)
[E-Book]轻松搞定XML(感谢kxxxx001提供)
[E-Book]XML实用大全
[E-Book]ASP.NET XML深入编程技术(超星格式)
[E-Book]MSXML SDK 4.0 Document(含XML,XSLT,XML Schema,DOM,SAX教程,及DOM参考手册,SAX2参考手册,XML参考手册.)
[E-Book]XML编程从入门到精通
[E-Book]XML宝典(第二版)(超星格式) 
[E-Book]Teach Yourself XML in 21 Days 3rd Edition
[E-Book]XML从入门到精通黄金版(超星格式)
[E-Book]XML Powered Web Forms
[E-Book]Oracle XML 开发手册(1-5章)
[E-Book]Oreilly DotNet & XML
[E-Book]XML Step by Step中文版(1-4章)
[E-Book]XML HTML CSS XSL Web编程实作教程
[E-Book]XML初学进阶
XML 1.0推荐标准(注解版)
[E-Book]无废话XML
SMTH XML版精华区
[E-Book]XML高级编程: 1-4章 5-9章 10-14章 15-18章 附录 
[E-Book]XML Pocket Reference 2nd Ed
Unicode 4.0 打包下载
[E-Book]Oreilly.XForms.Essentials.eBook(感谢dancewing提供)
[E-Book]McGraw-Hill - VoiceXML 2.0 Developer’s Guide(感谢dancewing提供)
[E-Book]Wiley - XHTML Essentials(感谢dancewing提供)
[E-Book]Definitive.XSL-FO(感谢dancewing提供)
[E-Book]Addison.Wesley.Effective.XML.50.Specific.Ways.To.Improve.Your.XML.eBook-LiB(感谢dancewing提供)
[E-Book]Microsoft Press. XML Programming Core Reference
SVG教程(感谢dancewing提供)
New.Riders-Cocoon.Building XML.Applications(感谢dancewing提供)
深入浅出XML示例下载(感谢雄鹰在线提供)
XML SPY帮助(XSLT部分)中文翻译下载(感谢haiwei_wang提供)
Tapestry帮助中文翻译下载(感谢haiwei_wang提供)
[IBM教程]SVG-可伸缩向量图形介绍:  本地浏览  本地打包下载
[IBM教程]使用SOAP进行XML消息传递:  本地浏览  本地打包下载
[IBM教程]XML 消息传递简介:  本地浏览  本地打包下载
[IBM教程]XML Schema Infoset Model,第 1 部分:  本地浏览  本地打包下载
[IBM教程]XHTML 的模块化:  本地浏览  本地打包下载
[IBM教程]理解 XForms:  本地浏览  本地打包下载
[IBM教程]Cocoon 2 简介:  本地浏览  本地打包下载
[IBM教程]使用 XSLT 分析非 XML 数据:  本地浏览  本地打包下载
[IBM教程]ebXML 简介:  本地浏览  本地打包下载
[IBM教程]使用 JDBC 将数据抽取到 XML 中:  本地浏览  本地打包下载
[IBM教程]使用 JDBC 将 XML 中的数据插入到数据库:  本地浏览  本地打包下载
[IBM教程]理解 DOM:  本地浏览  本地打包下载
[IBM教程]理解 SAX:  本地浏览  本地打包下载
[IBM教程]理解 RELAX NG:  本地浏览  本地打包下载
[IBM教程]验证 XML:  本地浏览  本地打包下载
[IBM教程]安装和配置 Xalan-Java:  本地浏览  本地打包下载
[IBM教程]XML 简介:  本地浏览  本地打包下载
[IBM教程]使用 XML Query 处理 XML:  本地浏览  本地打包下载
[IBM教程]安装和配置 Xerces2 Java 解析器:  本地浏览  本地打包下载
[IBM教程]Xerces-Java 2 中的 XML Schema 验证:  本地浏览  本地打包下载
[IBM教程]用 XSL 操作数据:  本地浏览  本地打包下载
[IBM教程]XSL 格式化对象(XSL-FO)基础知识:  本地浏览  本地打包下载
[IBM教程]XSL-FO 高级技术:  本地浏览  本地打包下载



赞助商

文章索引模板

好友推荐链接

强力推荐链接

分类目录

   

统计信息

Translator

Chinese (Simplified) flagItalian flagKorean flagChinese (Traditional) flagPortuguese flagEnglish flagGerman flagFrench flagSpanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flagCzech flag
Croatian flagDanish flagFinnish flagPolish flagSwedish flagNorwegian flag          

标签

专利战 世界 中国 为什么 介绍 使用 公司 分析 利用 功能 原谅我红尘颠倒 发现 天涯 如何 实现 工具 应该 慕容雪村 技术 插件 搜索引擎 支持 数据库 文件 方式 时间 服务器 用户 简单 管理 系统 网站 美国 谁的心不曾柔软 进行 部分 问题 AJAX Google LAN Linux MySQL PHP plugin WordPress

热门浏览