Changeset 82 in svn


Ignore:
Timestamp:
2006-06-18T01:26:00Z (9 years ago)
Author:
Xuefer
Message:

merged [74], [81]

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/xcache.c

    r75 r82  
    1212#include "ext/standard/info.h"
    1313#include "ext/standard/md5.h"
     14#include "ext/standard/php_math.h"
    1415#include "zend_extensions.h"
    1516#include "SAPI.h"
     
    17841785
    17851786/* {{{ PHP_INI */
    1786 static PHP_INI_MH(xc_OnUpdateLong)
    1787 {
    1788     long *p = (long *)mh_arg1;
    1789     *p = zend_atoi(new_value, new_value_length);
    1790     return SUCCESS;
    1791 }
    17921787
    17931788static PHP_INI_MH(xc_OnUpdateBool)
     
    18011796        *p = (zend_bool) 1;
    18021797    }
    1803     return SUCCESS;
    1804 }
    1805 
    1806 static PHP_INI_MH(xc_OnUpdateHashInfo)
    1807 {
    1808     xc_hash_t *p = (xc_hash_t *)mh_arg1;
    1809     int bits, size;
    1810 
    1811     p->size = zend_atoi(new_value, new_value_length);
    1812     for (size = 1, bits = 1; size < p->size; bits ++, size <<= 1) {
    1813         /* empty body */
    1814     }
    1815     p->size = size;
    1816     p->bits = bits;
    1817     p->mask = size - 1;
    1818 
    18191798    return SUCCESS;
    18201799}
     
    18301809    return SUCCESS;
    18311810}
     1811
    18321812#ifdef ZEND_ENGINE_2
    18331813#define OnUpdateInt OnUpdateLong
     
    18401820#endif
    18411821PHP_INI_BEGIN()
    1842     PHP_INI_ENTRY1     ("xcache.size",                   "0", PHP_INI_SYSTEM, xc_OnUpdateLong,     &xc_php_size)
    1843     PHP_INI_ENTRY1     ("xcache.count",                  "1", PHP_INI_SYSTEM, xc_OnUpdateHashInfo, &xc_php_hcache)
    1844     PHP_INI_ENTRY1     ("xcache.slots",                 "8K", PHP_INI_SYSTEM, xc_OnUpdateHashInfo, &xc_php_hentry)
    1845 
    1846     PHP_INI_ENTRY1     ("xcache.var_size",               "0", PHP_INI_SYSTEM, xc_OnUpdateLong,     &xc_var_size)
    1847     PHP_INI_ENTRY1     ("xcache.var_count",              "1", PHP_INI_SYSTEM, xc_OnUpdateHashInfo, &xc_var_hcache)
    1848     PHP_INI_ENTRY1     ("xcache.var_slots",             "8K", PHP_INI_SYSTEM, xc_OnUpdateHashInfo, &xc_var_hentry)
    1849 
    18501822    PHP_INI_ENTRY1     ("xcache.mmap_path",     DEFAULT_PATH, PHP_INI_SYSTEM, xc_OnUpdateString,   &xc_mmap_path)
    18511823    PHP_INI_ENTRY1     ("xcache.coredump_directory",      "", PHP_INI_SYSTEM, xc_OnUpdateString,   &xc_coredump_dir)
     
    18631835PHP_INI_END()
    18641836/* }}} */
     1837static int xc_config_long_disp(char *name, char *default_value) /* {{{ */
     1838{
     1839    char *value;
     1840    char buf[100];
     1841
     1842    if (cfg_get_string(name, &value) != SUCCESS) {
     1843        sprintf(buf, "%s (default)", default_value);
     1844        php_info_print_table_row(2, name, buf);
     1845    }
     1846    else {
     1847        php_info_print_table_row(2, name, value);
     1848    }
     1849
     1850    return SUCCESS;
     1851}
     1852/* }}} */
     1853#define xc_config_hash_disp xc_config_long_disp
    18651854/* {{{ PHP_MINFO_FUNCTION(xcache) */
    18661855static PHP_MINFO_FUNCTION(xcache)
    18671856{
     1857    char buf[100];
     1858    char *ptr;
     1859
    18681860    php_info_print_table_start();
    1869     php_info_print_table_header(2, "XCache Support", (xc_php_size || xc_var_size) ? "enabled" : "disabled");
     1861    php_info_print_table_header(2, "XCache Support", XCACHE_MODULES);
    18701862    php_info_print_table_row(2, "Version", XCACHE_VERSION);
    18711863    php_info_print_table_row(2, "Modules Built", XCACHE_MODULES);
    18721864    php_info_print_table_row(2, "Readonly Protection", xc_readonly_protection ? "enabled" : "N/A");
    1873     php_info_print_table_row(2, "Opcode Cache", xc_php_size ? "enabled" : "disabled");
    1874     php_info_print_table_row(2, "Variable Cache", xc_var_size ? "enabled" : "disabled");
     1865
     1866    if (xc_php_size) {
     1867        ptr = _php_math_number_format(xc_php_size, 0, '.', ',');
     1868        sprintf(buf, "enabled, %s bytes, %d split(s), with %d slots each", ptr, xc_php_hcache.size, xc_php_hentry.size);
     1869        php_info_print_table_row(2, "Opcode Cache", buf);
     1870        efree(ptr);
     1871    }
     1872    else {
     1873        php_info_print_table_row(2, "Opcode Cache", "disabled");
     1874    }
     1875    if (xc_var_size) {
     1876        ptr = _php_math_number_format(xc_var_size, 0, '.', ',');
     1877        sprintf(buf, "enabled, %s bytes, %d split(s), with %d slots each", ptr, xc_var_hcache.size, xc_var_hentry.size);
     1878        php_info_print_table_row(2, "Variable Cache", buf);
     1879        efree(ptr);
     1880    }
     1881    else {
     1882        php_info_print_table_row(2, "Variable Cache", "disabled");
     1883    }
    18751884#ifdef HAVE_XCACHE_COVERAGER
    18761885    php_info_print_table_row(2, "Coverage Dumper", XG(coveragedumper) && xc_coveragedump_dir && xc_coveragedump_dir[0] ? "enabled" : "disabled");
    18771886#endif
    18781887    php_info_print_table_end();
     1888
     1889    php_info_print_table_start();
     1890    php_info_print_table_header(2, "Directive ", "Value");
     1891    xc_config_long_disp("xcache.size",       "0");
     1892    xc_config_hash_disp("xcache.count",      "1");
     1893    xc_config_hash_disp("xcache.slots",     "8K");
     1894
     1895    xc_config_long_disp("xcache.var_size",   "0");
     1896    xc_config_hash_disp("xcache.var_count",  "1");
     1897    xc_config_hash_disp("xcache.var_slots", "8K");
     1898    php_info_print_table_end();
     1899
    18791900    DISPLAY_INI_ENTRIES();
    18801901}
     
    19131934}
    19141935/* }}} */
     1936static int xc_config_hash(xc_hash_t *p, char *name, char *default_value) /* {{{ */
     1937{
     1938    int bits, size;
     1939    char *value;
     1940
     1941    if (cfg_get_string(name, &value) != SUCCESS) {
     1942        value = default_value;
     1943    }
     1944
     1945    p->size = zend_atoi(value, strlen(value));
     1946    for (size = 1, bits = 1; size < p->size; bits ++, size <<= 1) {
     1947        /* empty body */
     1948    }
     1949    p->size = size;
     1950    p->bits = bits;
     1951    p->mask = size - 1;
     1952
     1953    return SUCCESS;
     1954}
     1955/* }}} */
     1956static int xc_config_long(long *p, char *name, char *default_value) /* {{{ */
     1957{
     1958    char *value;
     1959
     1960    if (cfg_get_string(name, &value) != SUCCESS) {
     1961        value = default_value;
     1962    }
     1963
     1964    *p = zend_atoi(value, strlen(value));
     1965    return SUCCESS;
     1966}
     1967/* }}} */
    19151968/* {{{ PHP_MINIT_FUNCTION(xcache) */
    19161969static PHP_MINIT_FUNCTION(xcache)
     
    19381991        }
    19391992    }
     1993
     1994    xc_config_long(&xc_php_size,   "xcache.size",       "0");
     1995    xc_config_hash(&xc_php_hcache, "xcache.count",      "1");
     1996    xc_config_hash(&xc_php_hentry, "xcache.slots",     "8K");
     1997
     1998    xc_config_long(&xc_var_size,   "xcache.var_size",   "0");
     1999    xc_config_hash(&xc_var_hcache, "xcache.var_count",  "1");
     2000    xc_config_hash(&xc_var_hentry, "xcache.var_slots", "8K");
    19402001
    19412002    if (xc_php_size <= 0) {
Note: See TracChangeset for help on using the changeset viewer.