|
标签:杂谈 |
分类:心情日记 vs. 胡说八道 |
在上两章里讲述了扩展模块的基本用法,相信读者已经能够构建自己的扩展模块了,接下来,我们来看看几个重要的函数:
1、PHP_MINIT_FUNCTION(MyModule);
当模块被Zend Engine(ZE)加载后,例如Apache启动,加载了PHP模块,ZE会对每一个扩展模块调用此函数(如果有的话),可以在该函数里进行一些初始化操作。
2、PHP_RINIT_FUNCTION(MyModule);
对于每一个“使用”该模块的PHP脚本请求前,都执行该函数(如果有的话),最好的例子:Session扩展模块,如果在一个PHP脚本里执行session.start(),Session模块的PHP_RINIT_FUNCTION()将被调用。详情可以看看session模块的源代码。
3、PHP_RSHUTDOWN_FUNCTION(MyModule);
与PHP_RINIT_FUNCTION()相反,该函数是在一个PHP脚本执行完毕后执行。
4、PHP_MSHUTDOWN_FUNCTION(MyModule);
当ZE收到shutdown信号后,例如apache卸载PHP模块,ZE对每一个模块调用此函数,最后关闭自己的
在上一章里我们介绍了如何编写自己的函数,接下来,我们开始编写一个有参数有返回值的扩展函数。
因为Zend没有正式的函数调用语法检查支持,所以我们在编写扩展函数的时候必须得“小心”,也就是我们必须得严格地进行调用合法性检查。首先,我们写一个函数:
#include 'string.h'
PHP_FUNCTION(haosoft_strcat)
{
首先,我们应该选择如何去构建我们的扩展模块,有三种方式:
1、External Modules:外部模块,也就是编译成共享库,用dl()函数动态加载。
好处:
(1)不需要重新编译PHP
(2)PHP体积小,因为不需要编译进PHP
缺点:
(1)每次*.php脚本执行都需要用dl()去加载,效率较低
(2)每次都要调用dl()
2、Built-in Modules:编译进PHP
好处:
(1)不需要动态加载,模块在php脚本里面可以直接使用。
(2)不需要将模块编译成.so共享库,因为直接编译进PHP。
缺点:
(1)对模块的改变都需要重新编译PHP
(2)因为编译进PHP,所以PHP二进制文件较大,而且多占点内存
3、The Zend Engine:Zend核心里实现(略……有兴趣的话可以看Zend API)
Note:本人推荐用第2种方式,直接编译进PHP,但是在下面示例里,我们编译成外部模块,因为,外部模块不需要重新编译PHP,所以在测试阶段先编译成共享库,然后用dl()加载(不过记得在php.ini里将安全模式设为Off),测试
|
标签:心情 |
分类:心情日记 vs. 胡说八道 |
最近两天,心情非常复杂。工作、生活、人际关系等,处处都散发着混乱的气息和无序的征兆,甚至没有办法集中精神组织正常的语言来撰写博文了。鉴于博客的公开性,还是写几个关键字,算是对最近的心情做个记录吧。毕竟,有些事情自己知道就好……
混乱、烦躁、生病、慰问;
你不懂、重复、无效、经商、经验;
孤独、存在感、被遗忘;
累、困惑、前景、发展、商机;
实验、创意、忽略、歧途;
合作伙伴、建议、冲突、业绩、改善;
生日、阴历、感情、鄙视、无视、纯真……
今天过得实在不怎么顺利啊。怎么说呢?很多事情没有照计划进行,有些事情根本是出乎意料。首先,早上约的两个前台面试,居然一个都没来。实在不知道这些人投简历、约面试图的啥。二来,今天来洽谈合作的人让我觉得实在很囧……
前台接待处
下午14:00左右,预约来谈合作的两位代表准时到达我们公司。由于所代表的公司在中国大陆地区传统网络游戏行业也是数一数二的龙头企业,业绩也颇为理想,甚至可称得上“财大气粗”,因此绝不敢丝毫怠慢。况且在此之前已经进行过一次初步意向性谈判,双方已在某些观点上达成共识,几乎到了“相见恨晚”的地步。本着“来者都是客”和“友好协商”的原则,恭敬地将两位迎进会议室,互相进行一下身份介绍,寒暄几句,准备切入正题。紧跟着,囧事接二连三地出现了。
首
依然习惯性地整天开着电驴,但是在网上不知道下点什么好。电影都是千篇一律的题材,拼效果,拼制作,就是没人拼演技,拼内涵,无趣得紧。闲来无事搜索了一下拉丁舞大赛的视频集,下载了几个比赛的DVDRip。其中有一个是2005年美国锦标赛职业组的决赛和表演。
从头到尾看了一下,感慨颇深啊。职业的确实是不一样,和业余组是有不少差距的。尽管在我心目中,Brian和Slavik已经有如神一般的存在了,但是职业选手所表现出的力量和速度确实是不同的。当然,舞蹈除了是一种竞技项目,更重要的也是一门表演艺术,需要加入艺术感,舞者对音乐的理解,以及两人之间的配合。比如Brian的轻巧,Slavik的华丽(顺便BS一下他那小蛮腰 = =#),都是理论知识和国标标准之外的附加品。
在这次比赛中,Ilya和Nadia是我最
今天上午,《狂想之都》在台湾地区的运营方一行四人来到公司,商议并确认了一些运营需要的准备工作细则。四人当中,有一位专门负责游戏盈利模式策划的相关负责人,对游戏提出了一些看法和建议。有关他所提的建议,我一定会重点考虑。但是,如果暂且不论建议本身的合理性和有效性来说,我对游戏的盈利模式,至少针对《狂想之都》来说,也有自己的看法。
就目前的网页游戏盈利和收费模式看来,无外乎两种:道具等游戏内资产直接销售,或者就是以出售加成服务的“贵宾身份”模式。两种方式自然是各有利弊,但是综合看来,作为一款策略类游戏,我个人比较倾向于后者。
道具方式的最大好处就是可以在短期之内迅速获得利润,提升营业额,充实资金储备。当然,前提是玩家真的会为你的道具买账才行。要想依靠游戏内的道具
今天想起这么个主题,主要是有感于最近一段时间公司在新项目方面的策划工作。怎么说呢?原则上,我不属于策划部门的人,也不负责这方面工作。不过对于游戏的感悟,还是会促使我多考虑一些,何况策划的内容最终还要通过技术来实现。如果策划者和执行者之间的“同步率”过低,那后果就不堪设想了……
公司接下来可能会同时开始两个新游戏项目,分别对应不同的市场需求。从游戏的世界观设定、题材、内容和玩法上都需要进行突破。到目前为止,策划案已经被完整推翻过两次了。为啥?主要原因概括起来就一句话:“这压根儿就不是WebGame!”
第一次的策划推翻是一个多月前的事情。当时拿到策划案的时候,从头到尾看了一遍,第一印象就是感觉传统网游的味道太重了。WebGame虽然也是一种娱乐形式,但是和网络游戏有很多本质的区别。比如时间概念、操作方式、用