用的是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. windows下RocketMQ的安装部署

    一.预备环境 1.系统 Windows 2. 环境 JDK1.8.Maven.Git 二. RocketMQ部署 1.下载 1.1地址:http://rocketmq.apache.org/relea ...

  2. Python的序列数据和变量

    本篇内容涉及字符串.列表.元组.Python中的报错,以及变量本质,包括引用计数技术 该篇只为抛砖引玉,其内容来自Python学习中总结,另外感谢李老师的教导和Python班同学们的帮助 附上李老师和 ...

  3. echars 饼图使用

    option = {       tooltip: {         trigger: 'item',         formatter: '{a} <br/>{b}: {c} ({d ...

  4. OpenStack 服务心跳机制和状态监控

    参考链接: OpenStack服务心跳机制和状态监控 https://blog.csdn.net/qqhappy8/article/details/79304221

  5. Python语言中的关键字(自己做的读书笔记)

    电脑配置:联想笔记本电脑 windows8系统 Python版本:2.7.8 本文章撰写时间:2015.1.1 作者:陈东陈 阅读说明: 1.本文都是先解释,后放图片: 2.文中斜体部分要么为需要输入 ...

  6. windows下cmd命令行计算文件hash值

    命令:certutil -hashfile certutil -hashfile D:\.exe MD5 certutil -hashfile D:\.exe SHA1 certutil -hashf ...

  7. win7中java编程工具安装 java环境变量设置

    一.下载java 官方地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html ...

  8. 网站被K或者降权后应该如何恢复

    http://www.wocaoseo.com/thread-133-1-1.html     网站被K后应该如何恢复,深圳SEO和大家一起研究一下,其实这类的问题大家经常会遇到,而且这类的文章铺天盖 ...

  9. day43:CSS样式相关

    目录 1.高度和宽度 2.字体相关 3.字体对齐 4.颜色设置 5.背景 6.边框 7.盒子模型 8.display属性 9.伪元素选择器 10.伪类选择器 11.浮动 12.文字装饰 13.相对定位 ...

  10. TypeError 之 Cannot convert undefined or null to object

    分享一个今天遇到的一个bug , 希望对你也有用. 1.Object.keys()中传错了参数 2.由于undefined和null无法转成对象,所以如果它们做为Object.assign()的参数( ...