@@ -1717,21 +1717,41 @@ PHP_METHOD(RedisCluster, clearlasterror) {
17171717 RETURN_TRUE ;
17181718}
17191719
1720+ static void redisSumNodeBytes (redisClusterNode * node , zend_long * tx , zend_long * rx ) {
1721+ struct redisClusterNode * slave ;
1722+
1723+ * tx += node -> sock -> txBytes ;
1724+ * rx += node -> sock -> rxBytes ;
1725+
1726+ if (node -> slaves ) {
1727+ ZEND_HASH_FOREACH_PTR (node -> slaves , slave ) {
1728+ * tx += slave -> sock -> txBytes ;
1729+ * rx += slave -> sock -> rxBytes ;
1730+ } ZEND_HASH_FOREACH_END ();
1731+ }
1732+ }
1733+
1734+ static void redisClearNodeBytes (redisClusterNode * node ) {
1735+ struct redisClusterNode * slave ;
1736+
1737+ node -> sock -> txBytes = 0 ;
1738+ node -> sock -> rxBytes = 0 ;
1739+
1740+ if (node -> slaves ) {
1741+ ZEND_HASH_FOREACH_PTR (node -> slaves , slave ) {
1742+ slave -> sock -> txBytes = 0 ;
1743+ slave -> sock -> rxBytes = 0 ;
1744+ } ZEND_HASH_FOREACH_END ();
1745+ }
1746+ }
1747+
17201748PHP_METHOD (RedisCluster , gettransferredbytes ) {
17211749 redisCluster * c = GET_CONTEXT ();
1722- redisClusterNode * node , * slave ;
17231750 zend_long rx = 0 , tx = 0 ;
1751+ redisClusterNode * node ;
17241752
17251753 ZEND_HASH_FOREACH_PTR (c -> nodes , node ) {
1726- tx += node -> sock -> txBytes ;
1727- rx += node -> sock -> rxBytes ;
1728-
1729- if (node -> slaves ) {
1730- ZEND_HASH_FOREACH_PTR (node -> slaves , slave ) {
1731- tx += slave -> sock -> txBytes ;
1732- rx += slave -> sock -> rxBytes ;
1733- } ZEND_HASH_FOREACH_END ();
1734- }
1754+ redisSumNodeBytes (node , & tx , & rx );
17351755 } ZEND_HASH_FOREACH_END ();
17361756
17371757 array_init_size (return_value , 2 );
@@ -1742,18 +1762,10 @@ PHP_METHOD(RedisCluster, gettransferredbytes) {
17421762
17431763PHP_METHOD (RedisCluster , cleartransferredbytes ) {
17441764 redisCluster * c = GET_CONTEXT ();
1745- redisClusterNode * node , * slave ;
1765+ redisClusterNode * node ;
17461766
17471767 ZEND_HASH_FOREACH_PTR (c -> nodes , node ) {
1748- node -> sock -> txBytes = 0 ;
1749- node -> sock -> rxBytes = 0 ;
1750-
1751- if (node -> slaves ) {
1752- ZEND_HASH_FOREACH_PTR (node -> slaves , slave ) {
1753- slave -> sock -> txBytes = 0 ;
1754- slave -> sock -> rxBytes = 0 ;
1755- } ZEND_HASH_FOREACH_END ();
1756- }
1768+ redisClearNodeBytes (node );
17571769 } ZEND_HASH_FOREACH_END ();
17581770}
17591771
0 commit comments