用的是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';
?>

  

最新文章

  1. MMORPG大型游戏设计与开发(服务器 AI 逻辑设定和状态结点)
  2. 【leetcode】Pascal&#39;s Triangle II
  3. 《社交网络》里的评分公式——ELO排名系统
  4. CodeSmith模板
  5. css中clip-path属性的运用
  6. echart------属性详细介绍
  7. 关于个人博客和Github地址提交
  8. linux之应用开发杂记(一)
  9. [杂题]CSUOJ1276 Counting Route Sequence
  10. 解决Mysql的主从数据库没有同步的两种方法
  11. hdu-3790-最短路径问题(dijkstra算法)
  12. (三)—Linux文件传输与mysql数据库安装
  13. rs(0)与rs(&quot;字段名&quot;)的区别
  14. [ASP.NET] 如何利用Javascript分割檔案上傳至後端合併
  15. MySQL数据库(增删改查语句)
  16. iOS逆向开发(4):注入目标函数 | fishhook | MobileSubstrate | MSHookFunction | iOSOpenDev
  17. Python 9*9口诀
  18. locust的安装与使用
  19. EBS增加客制应用CUX:Custom Application
  20. JVM调优总结 -Xms -Xmx -Xmn -Xss等

热门文章

  1. Alink漫谈(十九) :源码解析 之 分位点离散化Quantile
  2. jmeter http并发测试时报错
  3. SEO工程师考试题目
  4. Eazfuscator.net 2020 虚拟化保护(Virtulization)机制分析
  5. laravel kernel解析过程
  6. 拾色器,可以取出电脑屏幕的任何颜色,ui以及程序员前端等常用软件,文件很小,300K
  7. HDU - 1005 -Number Sequence(矩阵快速幂系数变式)
  8. hdu6704 2019CCPC网络选拔赛1003 K-th occurrence 后缀数组
  9. [BUUOJ记录] [BJDCTF 2nd]文件探测
  10. 下拉列表被flash覆盖的解决方法