Пример #1
0
PHP_METHOD(Phalcon_Mvc_Model_MetaData_Xcache, reset)
{
	zval *meta = phalcon_fetch_nproperty_this(this_ptr, SL("_metaData"), PH_NOISY TSRMLS_CC);
	zval *real_key = NULL;

	PHALCON_MM_GROW();

	if (SUCCESS == phalcon_function_exists_ex(SL("xcache_unset_by_prefix") TSRMLS_CC)) {
		zval *prefix = phalcon_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY TSRMLS_CC);

		PHALCON_INIT_VAR(real_key);
		phalcon_concat_svs(&real_key, SL("$PMM$"), prefix, SL("meta-"), 0 TSRMLS_CC);
		PHALCON_CALL_FUNCTION(NULL, "xcache_unset_by_prefix", real_key);
	}
	else if (Z_TYPE_P(meta) == IS_ARRAY) {
		HashTable *ht = Z_ARRVAL_P(meta);
		HashPosition hp;
		zval *prefix = phalcon_fetch_nproperty_this(this_ptr, SL("_prefix"), PH_NOISY TSRMLS_CC);

		for (
			zend_hash_internal_pointer_reset_ex(ht, &hp);
			zend_hash_get_current_key_type_ex(ht, &hp) != HASH_KEY_NON_EXISTENT;
			zend_hash_move_forward_ex(ht, &hp)
		) {
			zval key = phalcon_get_current_key_w(ht, &hp);

			PHALCON_INIT_NVAR(real_key);
			phalcon_concat_svsv(&real_key, SL("$PMM$"), prefix, SL("meta-"), &key, 0 TSRMLS_CC);
			PHALCON_CALL_FUNCTION(NULL, "xcache_unset", real_key);
		}
	}

	PHALCON_CALL_PARENT(NULL, phalcon_mvc_model_metadata_xcache_ce, getThis(), "reset");
	PHALCON_MM_RESTORE();
}
Пример #2
0
PHP_METHOD(Phalcon_Mvc_Model_MetaData_Apc, reset)
{
	zval *real_key = NULL, *meta;
	zend_string *str_key;
	ulong idx;

	PHALCON_MM_GROW();

	meta = phalcon_read_property(getThis(), SL("_metaData"), PH_NOISY);

	if (Z_TYPE_P(meta) == IS_ARRAY) {
		zval *prefix = phalcon_read_property(getThis(), SL("_prefix"), PH_NOISY);

		ZEND_HASH_FOREACH_KEY(Z_ARRVAL_P(meta), idx, str_key) {
			zval key;
			if (str_key) {
				ZVAL_STR(&key, str_key);
			} else {
				ZVAL_LONG(&key, idx);
			}

			PHALCON_INIT_NVAR(real_key);
			phalcon_concat_svsv(real_key, SL("$PMM$"), prefix, SL("meta-"), &key, 0);
			PHALCON_CALL_FUNCTION(NULL, "apc_delete", real_key);
		} ZEND_HASH_FOREACH_END();
Пример #3
0
PHP_METHOD(Phalcon_Mvc_Model_MetaData_Apc, reset){

	zval meta = {}, prefix = {};
	zend_string *str_key;
	ulong idx;

	phalcon_read_property(&meta, getThis(), SL("_metaData"), PH_NOISY);

	if (Z_TYPE(meta) == IS_ARRAY) {
		phalcon_read_property(&prefix, getThis(), SL("_prefix"), PH_NOISY);

		ZEND_HASH_FOREACH_KEY(Z_ARRVAL(meta), idx, str_key) {
			zval key = {}, real_key = {};
			if (str_key) {
				ZVAL_STR(&key, str_key);
			} else {
				ZVAL_LONG(&key, idx);
			}

			phalcon_concat_svsv(&real_key, SL("$PMM$"), &prefix, SL("meta-"), &key, 0);
			PHALCON_CALL_FUNCTION(NULL, "apc_delete", &real_key);
		} ZEND_HASH_FOREACH_END();