用的是Zookeeper扩展,Php版本为7.2.17,下载地址:

https://pecl.php.net/package/zookeeper

用的是0.6.4版本

创建节点官方给的示例如下:

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = array(
array(
'perms' => Zookeeper::PERM_ALL,
'scheme' => 'world',
'id' => 'anyone',
)
);
$path = '/path/to/newnode';
$realPath = $zookeeper->create($path, null, $aclArray);
if ($realPath)
echo $realPath;
else
echo 'ERR';
?>

  

一直报无效的acl,查看源代码:

static void php_parse_acl_list(zval *z_acl, struct ACL_vector *aclv)
{
int size = ;
int i = ;
#ifdef ZEND_ENGINE_3
ulong index = ;
zend_string *key;
zval *entry = NULL;
zval *perms = NULL;
zval *scheme = NULL;
zval *id = NULL;
#else
zval **entry;
zval **perms, **scheme, **id;
#endif if (!z_acl || (size = zend_hash_num_elements(Z_ARRVAL_P(z_acl))) == ) {
return;
} aclv->data = (struct ACL *)calloc(size, sizeof(struct ACL)); #ifdef ZEND_ENGINE_3
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(z_acl), index, key, entry) {
if( Z_TYPE_P(entry) != IS_ARRAY ) {
continue;
} perms = zend_hash_str_find(Z_ARRVAL_P(entry), ZEND_STRL("perms"));
scheme = zend_hash_str_find(Z_ARRVAL_P(entry), ZEND_STRL("scheme"));
id = zend_hash_str_find(Z_ARRVAL_P(entry), ZEND_STRL("id"));
if (perms == NULL || scheme == NULL || id == NULL) {
continue;
} convert_to_long_ex(perms);
convert_to_string_ex(scheme);
convert_to_string_ex(id); aclv->data[i].perms = (int32_t)Z_LVAL_P(perms);
aclv->data[i].id.id = strdup(Z_STRVAL_P(id));
aclv->data[i].id.scheme = strdup(Z_STRVAL_P(scheme)); i++;
} ZEND_HASH_FOREACH_END(); #else
for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(z_acl));
zend_hash_get_current_data(Z_ARRVAL_P(z_acl), (void**)&entry) == SUCCESS;
zend_hash_move_forward(Z_ARRVAL_P(z_acl))) { if (Z_TYPE_PP(entry) != IS_ARRAY) {
continue;
} perms = scheme = id = NULL;
zend_hash_find(Z_ARRVAL_PP(entry), ZEND_STRS("perms"), (void**)&perms);
zend_hash_find(Z_ARRVAL_PP(entry), ZEND_STRS("scheme"), (void**)&scheme);
zend_hash_find(Z_ARRVAL_PP(entry), ZEND_STRS("id"), (void**)&id);
if (perms == NULL || scheme == NULL || id == NULL) {
continue;
} convert_to_long_ex(perms);
convert_to_string_ex(scheme);
convert_to_string_ex(id); aclv->data[i].perms = (int32_t)Z_LVAL_PP(perms);
aclv->data[i].id.id = strdup(Z_STRVAL_PP(id));
aclv->data[i].id.scheme = strdup(Z_STRVAL_PP(scheme)); i++;
}
#endif aclv->count = i;
}

源码里把acl参数当作数组的数组了,所以调整下就可以了:

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = [];
$aclArray[] = array(
array(
'perms' => Zookeeper::PERM_ALL,
'scheme' => 'world',
'id' => 'anyone',
)
);
$path = '/path/to/newnode';
$realPath = $zookeeper->create($path, null, $aclArray);
if ($realPath)
echo $realPath;
else
echo 'ERR';
?>

  

php Zookeeper使用踩坑的更多相关文章

  1. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  2. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  3. Spark踩坑记——从RDD看集群调度

    [TOC] 前言 在Spark的使用中,性能的调优配置过程中,查阅了很多资料,之前自己总结过两篇小博文Spark踩坑记--初试和Spark踩坑记--数据库(Hbase+Mysql),第一篇概况的归纳了 ...

  4. [转]Spark 踩坑记:数据库(Hbase+Mysql)

    https://cloud.tencent.com/developer/article/1004820 Spark 踩坑记:数据库(Hbase+Mysql) 前言 在使用Spark Streaming ...

  5. redis从入门到踩坑

    背景 Redis在互联网项目的使用也是非常普遍的,作为最常用的NO-SQL数据库,对Redis的了解已经成为了后端开发的必备技能.小编对Redis的使用时间不长,但是项目中确两次踩中了Redis的坑, ...

  6. Spark踩坑记——数据库(Hbase+Mysql)转

    转自:http://www.cnblogs.com/xlturing/p/spark.html 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库 ...

  7. Spark踩坑记:Spark Streaming+kafka应用及调优

    前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark streaming从k ...

  8. 一次flume exec source采集日志到kafka因为单条日志数据非常大同步失败的踩坑带来的思考

    本次遇到的问题描述,日志采集同步时,当单条日志(日志文件中一行日志)超过2M大小,数据无法采集同步到kafka,分析后,共踩到如下几个坑.1.flume采集时,通过shell+EXEC(tail -F ...

  9. Dubbo 服务 IP 注册错误踩坑经历

    个人博客地址 studyidea.cn,点击查看更多原创文章 踩坑 公司最近新建一个机房,需要将现有系统同步部署到新机房,部署完成之后,两地机房同时对提供服务.系统架构如下图: 这个系统当前对外采用 ...

随机推荐

  1. 第2章 执行SparkSQL查询

    第2章 执行SparkSQL查询 2.1 命令行查询流程 打开Spark shell 例子:查询大于30岁的用户 创建如下JSON文件,注意JSON的格式: {"name":&qu ...

  2. Java 添加条码、二维码到PDF文档

    本文介绍如何通过Java程序在PDF文档中添加条码和二维码.创建条码时,可创建多种不同类型的条码,包括Codebar.Code11.Code128A.Code128B.Code32.Code39.Co ...

  3. golang grpc demo

    1.grpm 安装: git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc 2.proto, ...

  4. golang学习笔记:Interface类型断言详情

    原文链接:https://www.2cto.com/kf/201712/703563.html 1. 用于判断变量类型 demo如下: switch t := var.(type){ case str ...

  5. 团队作业4:第七篇Scrum冲刺博客(歪瑞古德小队)

    目录 一.Daily Scrum Meeting 1.1 会议照片 1.2 项目进展 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3.2 Code Review 记录 3.3 issue ...

  6. Jmeter+Ant+jenkins实现api自动化测试的持续集成

    0基础上手教程 @jmeter的使用 jmeter是一个基于java语言编写的开源测试工具,广泛应用于接口测试,性能测试,自动化测试. 接口自动化的编写教程,将于后续分享. 问题一:为什么用ant,而 ...

  7. CODING DevOps 代码质量实战系列第一课:代码规范与 Git Flow

    讲师介绍 杨周 CODING DevOps 架构师 CODING 布道师 连续创业者.DIY/Linux 玩家.知乎小 V,曾在创新工场.百度担任后端开发.十余年一线研发和带队经验,经历了 ToB.T ...

  8. asp.net Core3.1自定义权限体系-菜单和操作按钮权限

    我们在做项目项目,经常会碰到权限体系,权限体系属于系统架构的一个最底层的功能,也是非常重要的功能,几乎在每个项目都会用到.那么我们该如何设计一个比较合理的且扩展性较强的权限体系呢? 经过多天的摸索,参 ...

  9. LG P6788 「EZEC-3」四月樱花

    Description 在樱花盛开的四月,Muxii 望着满天飘落的樱花,向身旁的 ZZH 问道: “究竟有多少朵樱花在这个四月飘落?” ZZH 答道:“樱花飘落的朵数  $s$与时间 $t$ 有如下 ...

  10. 力扣Leetcode 面试题56 - I. 数组中数字出现的次数

    面试题56 - I. 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 ...