Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 43b43fc

Browse files
committed
publish/subscribe/unsubscribe implementation, fiw warnings
1 parent c6a510a commit 43b43fc

File tree

4 files changed

+372
-46
lines changed

4 files changed

+372
-46
lines changed

library.c

+22
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,28 @@ PHPAPI void redis_check_eof(RedisSock *redis_sock TSRMLS_DC)
1313
}
1414
}
1515

16+
PHPAPI zval *redis_sock_read_multibulk_reply_zval(INTERNAL_FUNCTION_PARAMETERS,
17+
RedisSock *redis_sock TSRMLS_DC) {
18+
char inbuf[1024], *response;
19+
int response_len;
20+
21+
redis_check_eof(redis_sock TSRMLS_CC);
22+
php_stream_gets(redis_sock->stream, inbuf, 1024);
23+
24+
if(inbuf[0] != '*') {
25+
return NULL;
26+
}
27+
int numElems = atoi(inbuf+1);
28+
29+
zval *z_tab;
30+
MAKE_STD_ZVAL(z_tab);
31+
array_init(z_tab);
32+
33+
redis_sock_read_multibulk_reply_loop(INTERNAL_FUNCTION_PARAM_PASSTHRU,
34+
redis_sock, z_tab, numElems);
35+
return z_tab;
36+
}
37+
1638
/**
1739
* redis_sock_read_bulk_reply
1840
*/

library.h

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ PHPAPI RedisSock* redis_sock_create(char *host, int host_len, unsigned short por
1414
PHPAPI int redis_sock_connect(RedisSock *redis_sock TSRMLS_DC);
1515
PHPAPI int redis_sock_server_open(RedisSock *redis_sock, int force_connect TSRMLS_DC);
1616
PHPAPI int redis_sock_disconnect(RedisSock *redis_sock TSRMLS_DC);
17+
PHPAPI zval *redis_sock_read_multibulk_reply_zval(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock TSRMLS_DC);
1718
PHPAPI char *redis_sock_read_bulk_reply(RedisSock *redis_sock, int bytes);
1819
PHPAPI int redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *_z_tab TSRMLS_DC);
1920
PHPAPI int redis_sock_read_multibulk_reply_loop(INTERNAL_FUNCTION_PARAMETERS, RedisSock *redis_sock, zval *z_tab, int numElems TSRMLS_DC);

php_redis.h

+4
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,10 @@ PHP_METHOD(Redis, exec);
110110

111111
PHP_METHOD(Redis, pipeline);
112112

113+
PHP_METHOD(Redis, publish);
114+
PHP_METHOD(Redis, subscribe);
115+
PHP_METHOD(Redis, unsubscribe);
116+
113117
#ifdef PHP_WIN32
114118
#define PHP_REDIS_API __declspec(dllexport)
115119
#else

0 commit comments

Comments
 (0)