PHP读取Excel XML及效率问题

有一个需求,需要用到数据的导入。数据内容主要是快递单号及运费等,原打算用csv的,但csv的零开头问题致使快递单号无法录入,所以改用excel。但excel的操作类库就要nM,实在是不放心资源效率问题。最后决定采用EXCEL的XML格式:只要一个XML的解析类就可以搞定。

开始时选择的是大众化的DOMDocument进行XML的解析,但测试时,7,000行数据进行遍历时耗时17秒,速度太慢。所以改用SimpleXML,配合xpath进行解析。速度果然快不少,从载入文档到逐行解析完成,只需要2秒钟,快了近十倍。

但在用xpath时遇到了一个问题,怎么也解析不到内容,后来发现是xmlns命名空间的问题。EXCEL的XML格式,带有这样一个命名空间的声明:xmlns=”urn:schemas-microsoft-com:office:spreadsheet”,所以在解析时要么将该声明删除掉,要么为SimpleXML注册一个命名空间,方法如下:

$content = preg_replace(‘/&.*;/’,”,$content);
$dom = new SimpleXMLElement($content);
$dom->registerXPathNamespace(‘c’, ‘urn:schemas-microsoft-com:office:spreadsheet’);
$rows = $dom->xpath(‘//c:Workbook//c:Worksheet//c:Table//c:Row’);

第一行的作用是去除影响解析的特殊字符,

第二行初始化对像,同时载入内容,

第三行即注册一个命名空间,

第四行做xpath时,加上命名空间的引用。

在读取单元格时,可以用下面的方法:

foreach($rows as $row){

    foreach($row as $cell) {
                $row_cache[] = strval($cell->Data);
     }

}

由此可见,SimpleXMLDocument没有读取nodeValue的方法,这里将对像转换成文本,可实现相同的功能。

张信宝是该死呢还是该死呢还是该死呢?

今天在网上乱窜,不小心看到了一篇名为“张信宝--汶川的千古罪人”的文章。说的是在当初汶川迁移还是重建的问题上,这只叫做张信宝的兽兽凭一已武断,支持就地重建,结果导致汶川再次受灾。

本着“网络之言,岂可轻信”的想法,又搜索了与张信宝相关的信息,果然,挺张贬张者均有之。同是因为报道出自CCAV之手,所以贬CCAV的也有之。这里且不说CCAV,大家心里也都明白。且来侃侃兽兽张信宝。

对张的采访作了剪辑是一定的,这一点张确实被AV阴了一手,这篇文章可作参考:http://blog.qq.com/qzone/622001902/1223716632.htm

但是无论经过如何的剪辑,这些话都是说出来了,而且说出的话无论放到什么语境下,都是罪无可恕,人神共愤的(具体语录大家可看相关视频或文章)。

首先,这只兽兽是典型的经验主义者。“我们待了一天。搞我们这种专家,到了顶上一看,底下的人一介绍,我们就清楚了。因为我们是专家。”
,“你问问(地调队)这些人岁数有多大,他们以前是干什么的,他们对这些的判断能力如何?种种因素造成的。(地调队队员)都是刚从学校出来的,对他们来说也是锻炼。”就凭这几句话,杀他千次万次都不冤。兽兽是用来做什么的?宰的嘛!

其次,唯中央决策论,不把百姓的生命当回事。以下引用张给央视台长的信中所说:“汶川:重建的选择”节目的“异地重建”导向,显然和中央的决策相悖,给当地政府的灾后恢复重建工作带来了严重的负面影响。[引用完毕]难道说中央的决策就是不顾调查研究,就是不顾百姓死活?!去他妈的。而这里就要顺便替CCAV批评柴静MM一句了,能顶着中央的决策做节目,你也够目无王法了。

当然,这个张兽兽的可恶之处还有很多,仅凭以上两点,就该诛其九族了,正如网友所说:养此人有何用?!养这些专家有何用?!

UGO MATTINA 时尚个性气质项链

UGO MATTINA 时尚个性气质项链

ugo mattina为意大利知名服饰品牌,2001年开始涉足饰品行业。该品牌聘请了服务于BVLGARI,Swarovski,THOMAS SABO等多家知名品牌的设计师担纲设计。作为一个设计师品牌,在意大利,法国,澳洲及东南亚拥有自己稳固的消费群体。通过多次与世界知名品牌服装的发布会合作,充分展示其知性,优雅的设计精髓。 

该款项链采用澳洲水晶、合金、镀银,人工细磨而成,表面光滑,色泽纯正,在阳光下折灵动闪眼,使人了心动不已,绚丽动人,提升气场,点睛之作。

参考价:99.00 RMB

Buy Now

如果您对UGO MATTINA感兴趣,可以点击链接浏览该品牌的更多精品:ttp://www.fclub.cn/rush-187.html?campaign=crzdot

数据库存储session时事务显式回滚的必要性

今天在处理一个form提交时遇到了这样一个问题:因为表单的填写项较多(是一个订单提交,涉及到配送信息和支付信息等诸多信息的提交),所以当提交信息出错时需要对本次提交的内容作缓存(记在session里),当返回表单页面修改信息时,可以把已经填写的信息赋给表单项,这样用户只需修改出错的地方就可以重新提交了.

实现原理很简单,但在做的时候碰到了一个问题,session值记不住.经过检查调试,找到原因是,在进行数据库的事务操作时,碰到错误,没有显式回滚,而是页面执行结束后,自动抛弃事务.而系统本身是用数据库存储session的,所以对于session的所有操作都被回滚掉了,自然也就不能存值了.

所以事务出错后的显式回滚还是很有必要的,除了可避免上面提到的问题外,还可以减少事务的等待时间,提高数据库的并发性能,特别是用到了行锁或是表锁的时候,更是可以减少死锁的机率.

在此记录,以备温习.

又一个全国哀悼日–2010年8月15日全国哀悼舟曲泥石流遇难者

这两天上海酷暑难耐,今天本打算下款网游玩一下,不料下到大半,登入官网,发现今天是全国哀悼日,停服一天,于是,响应号召,把还没下完的游戏又给删了。

近两年来全国哀悼日这样的活动似乎多了起来,天灾频现,当然是否有人祸的成分,不好说,也不便说。 阅读全文

【转载】万一不幸捡到了“避孕套”……

  王女士的订婚钻戒在停车场不慎丢失,捡拾者张某自称以为是假钻戒随手丢弃,无法归还。日前,北京二中院终审判决,张某拾得遗失物未妥善保管,且具有主观故意,应向王女士赔偿4.6万余元损失。法官解释说,拾得遗失物,应当返还给权利人。拾得人应当及时通知权利人领取,或者送交公安等有关部门。在此之前,拾得人应当妥善保管遗失物,因故意或者重大过失致使遗失物毁损、灭失的,应当承担民事责任。(7月28日《新京报》)

  拾获者扔掉真钻戒,被判赔失主4.6万元。捡东西也能捡出这样的结果,看来人倒霉了确实喝凉水也塞牙。以前我们都知道,见到老头老太太跌倒了轻易是不敢去扶的,现在又增加了一个明哲保身的新常识——地上的东西不要乱捡乱拾。

  不过,在对张某深表同情的同时,我觉得他还算是非常幸运的——幸亏他捡到的是戒指,如果他捡到的是“避孕套”,那才叫惨呢。捡到戒指扔掉了,无非是赔别人几万块钱罢了;捡到“避孕套”扔掉了,万一失主一口咬定因此避孕失败怀孕生子,捡东西的倒霉蛋岂不是要为此支付孩子的巨额抚养费?如果他捡到的还是一只用过的“避孕套”,那就更可怕了,法官说不定会判他赔别人一群孩子哩!

  社会有风险,出门须小心。为避免类似悲剧发生,我郑重建议:大家今后在出门的时候一定记住要戴墨镜、戴口罩,目不斜视,“非礼勿视、非礼勿听”,不仅“路边的野花不要采”,地上的东西也切不要乱捡。万一不小心捡到了“避孕套”一类的“烫手山芋”,请立即飞奔将其送交公安等有关部门,以免引火烧身。

【转载】