摘要:
第一步,先完成一个最简单的扩展,只提供一个函数,hello。主要代码:ZEND_FUNCTION(hello){php_printf("HelloWorld!\n");}staticzend_function_entrytonic_functions[]={ZEND_FE(hello,NULL){NULL,NULL,NULL}};zend_module_entrytonic_module_entry={#ifZEND_MODULE_API_NO>=20010901STANDARD_MODULE_HEADER,#endif"tonic",tonic_ 阅读全文
摘要:
在PHP扩展中定义一个类,是非常容易的,见地址:https://github.com/walu/phpbook/blob/master/10.1.md类的结构体定义:struct_zend_class_entry{chartype;char*name;zend_uintname_length;struct_zend_class_entry*parent;intrefcount;zend_boolconstants_updated;zend_uintce_flags; /* 普通类,接口,或者抽象类 */HashTablefunction_table;HashTabledefault_prope 阅读全文
摘要:
HashTable的使用示例:/*Demo*/PHP_METHOD(tonic_application,showglobals){zval*val=NULL;zval*ht_arr=NULL;MAKE_STD_ZVAL(ht_arr);array_init(ht_arr);MAKE_STD_ZVAL(val);ZVAL_STRING(val,"dopool",1);if(zend_hash_add(Z_ARRVAL_P(ht_arr),"a",sizeof("a"),&val,sizeof(zval*),NULL)==FAIL 阅读全文
摘要:
数据定义 :/*zend_hash.h*/typedefstructbucket{ulongh;/*Usedfornumericindexing*/uintnKeyLength; void*pData; /* 这里是array里面item对对应的数据,有点特殊的是,若存的是指针,这是指向下一个成员pDataPtr的指针,pDataPtr才是真正存放指针value的地方,有点不明白 */void*pDataPtr;structbucket*pListNext;structbucket*pListLast;structbucket*pNext;structbucket*pLast;chararKe 阅读全文
摘要:
写扩展,离不了访问全局变量像$_POST,$_GET,$_SERVER等,以下是YAF提供的代码,我把YAF相关的宏,去掉了...1/**YAF文档http://yaf.laruence.com/manual/**/234zval* yaf_request_query(uinttype,char*name,uintlenTSRMLS_DC){5zval**carrier,**ret;67#if(PHP_MAJOR_VERSION==5)&&(PHP_MINOR_VERSION<4)8zend_booljit_initialization=(PG(auto_globals_ 阅读全文
摘要:
先按照https://github.com/walu/phpbook/blob/master/5.1.md建好扩展的结构 ,三个关键的文件都要有:config.m4php_extname.hextname.c然后,把三个文件里面的WALU/walu 替换为相应的extname 注意大小写然后运行:phpize./configure --enable-extnamemakemake install扩展就弄好了.只是我在按照链接的文章创建的时候,碰到一个问题,扩展编译好了,可是加载到php的时候,老是提示错误:Invalid library (maybe not a PHP library) 阅读全文
摘要:
这几年买了一些书,每次搬家,都是最头疼的事...相信很多朋友都有感触...当废品卖掉,又舍不得...搬来搬去的,又太沉...现在转给需要的同行...我看书没有在书上做笔记的习惯,我也没有在书上写上自己的名字啥的,所以书所有的书,基本不会看到一个字,大部分书,只看了一遍,有一些,根本没看...只是书基本上全是08年买的,可能放的有点旧了...不说废话了...所有的书,全部10元一本...如果需要快递的,快递费也请你出...自己领的,可以有两个地址(需要先沟通):1.北京市海淀区学院路40号大唐电信2.北京市朝阳区望京南湖东园(此地址可以忽略)不好意思,去掉QQ联系...只让评论了,QQ上联系,太 阅读全文
摘要:
scribe:scribe2.2目前 版本依赖libboost,需要的版本是1.36,但不能大于1.42 阅读全文
摘要:
1、在A机压缩后,复制到B机器并解压缩tar -cf - /opt/dir1 | ssh 192.168.0.116 "cd /opt; tar -xf -"2、在A机压缩,并将压缩文件复制到B机tar -cf - /opt/dir1 | ssh 192.168.0.116 "cd /opt; cat - > dir1.tar"3、将A机的压缩文件,复制到B机并解压缩zcat dir.tar | ssh 192.168.0.116 "cd /opt; tar -xf -"传输到远程:tar czf - file| ssh ser 阅读全文
摘要:
suapt-get install devscripts dh-make autoconf libboost-dev libboost-all-dev libtool libevent-dev \ libglib2.0-dev debhelper mono-gmcs libmono-system-web2.0-cil ant libmono-dev \ erlang-base ruby1.8-dev python-all python-all-dev python-all-dbg ruby \ libcommons-lang-java php5 php... 阅读全文