Changeset 1572 in svn for trunk/mod_cacher/xc_cacher.c


Ignore:
Timestamp:
2014-11-12T07:03:46Z (5 years ago)
Author:
Xuefer
Message:

support for reference value

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mod_cacher/xc_cacher.c

    r1567 r1572  
    34013401            }
    34023402
    3403             xc_processor_restore_var(return_value, stored_entry_var, xc_vector_data(zend_class_entry *, &index_to_ce) TSRMLS_CC);
     3403            xc_processor_restore_var(return_value, ZESW(NULL, return_value_ptr), stored_entry_var, xc_vector_data(zend_class_entry *, &index_to_ce) TSRMLS_CC);
    34043404            xc_cached_hit_unlocked(cache->cached TSRMLS_CC);
    34053405        } LEAVE_LOCK(cache);
     
    34743474}
    34753475/* }}} */
     3476/* {{{ proto mixed &xcache_get_ref(string name)
     3477   Get cached data by specified name return referenced value. Not supported in PHP_4 */
     3478#ifdef ZEND_BEGIN_ARG_INFO_EX
     3479ZEND_BEGIN_ARG_INFO_EX(arginfo_xcache_get_ref, 0, 1, 1)
     3480    ZEND_ARG_INFO(0, name)
     3481ZEND_END_ARG_INFO()
     3482#else
     3483static unsigned char arginfo_xcache_get_ref[] = { 1, BYREF_NONE };
     3484#endif
     3485
     3486PHP_FUNCTION(xcache_get_ref)
     3487{
     3488    zif_xcache_get(INTERNAL_FUNCTION_PARAM_PASSTHRU);
     3489}
     3490/* }}} */
     3491/* {{{ proto bool  xcache_set(string name, mixed &value [, int ttl])
     3492   Store data to cache by specified name maintaining value referenced */
     3493#ifdef ZEND_BEGIN_ARG_INFO_EX
     3494ZEND_BEGIN_ARG_INFO_EX(arginfo_xcache_set_ref, 0, 0, 2)
     3495    ZEND_ARG_INFO(0, name)
     3496    ZEND_ARG_INFO(1, value)
     3497    ZEND_ARG_INFO(0, ttl)
     3498ZEND_END_ARG_INFO()
     3499#else
     3500static unsigned char arginfo_xcache_set_ref[] = { 3, BYREF_NONE, BYREF_FORCE, BYREF_NONE };
     3501#endif
     3502
     3503PHP_FUNCTION(xcache_set_ref)
     3504{
     3505    zif_xcache_set(INTERNAL_FUNCTION_PARAM_PASSTHRU);
     3506}
     3507/* }}} */
    34763508/* {{{ proto bool  xcache_isset(string name)
    34773509   Check if an entry exists in cache by specified name */
     
    36283660    long count = 1;
    36293661    long value = 0;
    3630     zval oldzval;
    36313662    VAR_BUFFER_FLAGS(name);
    36323663
     
    36813712            }
    36823713            else {
    3683                 xc_processor_restore_var(&oldzval, stored_entry_var, NULL TSRMLS_CC);
    3684                 convert_to_long(&oldzval);
    3685                 value = Z_LVAL(oldzval);
    3686                 zval_dtor(&oldzval);
     3714                zval zv;
     3715                xc_processor_restore_var(&zv, NULL, stored_entry_var, NULL TSRMLS_CC);
     3716                convert_to_long(&zv);
     3717                value = Z_LVAL(zv);
     3718                zval_dtor(&zv);
    36873719            }
    36883720        }
     
    37513783    PHP_FE(xcache_get,               arginfo_xcache_get)
    37523784    PHP_FE(xcache_set,               arginfo_xcache_set)
     3785    PHP_FE(xcache_get_ref,           arginfo_xcache_get_ref)
     3786    PHP_FE(xcache_set_ref,           arginfo_xcache_set_ref)
     3787#ifdef ZEND_BEGIN_ARG_INFO_EX
     3788#endif
    37533789    PHP_FE(xcache_isset,             arginfo_xcache_isset)
    37543790    PHP_FE(xcache_unset,             arginfo_xcache_unset)
Note: See TracChangeset for help on using the changeset viewer.