zoukankan      html  css  js  c++  java
  • php扩展开发-全局变量

    //php_myext.h
    ZEND_BEGIN_MODULE_GLOBALS(myext) unsigned
    long counter;//在这里定义需要的全局变量,可以多个,每个变量一行, ZEND_END_MODULE_GLOBALS(myext)
    //这个宏展开之后,实际上就是定义了一个结构体,用来保存每一个全局变量 //这是一个固定写法,你几乎会在每一个扩展里都能看到它的存在,它的作用是封装全局变量的调用,让它能够同时兼任线程安全和非线程安全两个环境 #ifdef ZTS
    #define MYEXT_G(v) TSRMG(myext_globals_id, zend_myext_globals *, v)//myext和MYEXT是扩展名称的大小写,不同的扩展有着不一样的名字 #else #define MYEXT_G(v) (myext_globals.v)//同上 #endif //php_myext.h 以上这些都是在.h文件中
    //myext.c
    //定义一个上面提到的结构体的变量,用来保存全局变量的数据 ZEND_DECLARE_MODULE_GLOBALS(myext); zend_module_entry myext_module_entry
    = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif "myext",//扩展名称 myext_functions,//zend_function_entry myext_functions 定义好的函数扩展变量 PHP_MINIT(myext),//MINIT_FUNCTION NULL,//MSHUTDOWN_FUNCTION PHP_RINIT(myext),//RINIT_FUNCTION//加入PHP_RINIT函数 NULL,//RSHUTDOWN_FUNCTION PHP_MINFO(myext),//MINFO_FUNCTION #if ZEND_MODULE_API_NO >= 20010901 PHP_MYEXT_VERSION, #endif STANDARD_MODULE_PROPERTIES };

      PHP_MINIT_FUNCTION(myext)
      {

      ZEND_INIT_MODULE_GLOBALS(myext, NULL,NULL);//分配一个线程安全的资源id,你可以不用关心它的具体实现,总之用来保存在线程安全中的全局变量。

    return SUCCESS;
    }
    //在每个页面请求时,都是加载这个函数,利用这个特性,来初始化全局变量的值。 PHP_RINIT_FUNCTION(myext) { MYEXT_G(counter)
    = 0; return SUCCESS; }

    到现在为止,我们就定义了一个全局变量counter,接着我们将在函数里使用这个变量

    //php_myext.h
    PHP_FUNCTION(myext_example_global)
    //函数注册 PHP_FE(myext_example_global, NULL)
    //每个函数一行,第一个参数与PHP_FUNCTION(name)的name一样 //函数定义 PHP_FUNCTION(myext_example_global) { MYEXT_G(counter)++; RETURN_LONG(MYEXT_G(counter)); }
    /*

    var_dump(myext_example_global());
    var_dump(myext_example_global());

    //你会看到同一次请求中,每次函数调用,counter的数量不断累加,但是每一次的请求,结果都是一样,这就是刚才提到的RINIT函数的作用

    
    

    int(1)
    int(2)

    */
  • 相关阅读:
    城市的划入划出效果
    文本溢出省略解决笔记css
    长串英文数字强制折行解决办法css
    Poj 2352 Star
    树状数组(Binary Indexed Trees,二分索引树)
    二叉树的层次遍历
    Uva 107 The Cat in the Hat
    Uva 10336 Rank the Languages
    Uva 536 Tree Recovery
    Uva10701 Pre, in and post
  • 原文地址:https://www.cnblogs.com/wuhen781/p/6240164.html
Copyright © 2011-2022 走看看