Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PHP_REDIS_API
- void generic_mset(INTERNAL_FUNCTION_PARAMETERS, char *kw, ResultCallback fun)
- {
- RedisSock *redis_sock;
- smart_string cmd = {0};
- zval *object, *z_array;
- HashTable *htargs;
- zend_string *zkey;
- zval *zmem;
- char buf[64];
- size_t keylen;
- ulong idx;
- if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oa",
- &object, redis_ce, &z_array) == FAILURE)
- {
- RETURN_FALSE;
- }
- /* Make sure we can get our socket, and we were not passed an empty array */
- if ((redis_sock = redis_sock_get(object TSRMLS_CC, 0)) == NULL ||
- zend_hash_num_elements(Z_ARRVAL_P(z_array)) == 0)
- {
- RETURN_FALSE;
- }
- /* Initialize our command */
- htargs = Z_ARRVAL_P(z_array);
- redis_cmd_init_sstr(&cmd, zend_hash_num_elements(htargs) * 2, kw, strlen(kw));
- ZEND_HASH_FOREACH_KEY_VAL(htargs, idx, zkey, zmem) {
- /* Handle string or numeric keys */
- if (zkey) {
- redis_cmd_append_sstr_key(&cmd, zkey->val, zkey->len, redis_sock, NULL);
- } else {
- keylen = snprintf(buf, sizeof(buf), "%ld", (long)idx);
- redis_cmd_append_sstr_key(&cmd, buf, (strlen_t)keylen, redis_sock, NULL);
- }
- /* Append our value */
- redis_cmd_append_sstr_zval(&cmd, zmem, redis_sock TSRMLS_CC);
- } ZEND_HASH_FOREACH_END();
- REDIS_PROCESS_REQUEST(redis_sock, cmd.c, cmd.len);
- IF_ATOMIC() {
- fun(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL, NULL);
- }
- REDIS_PROCESS_RESPONSE(fun);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement