您好,欢迎访问一九零五行业门户网

颠覆常识 -- 死循环结构代码,也有机会执行循环外的逻辑

get( '/test', array($this, 'watcher' ) );
  }
}
$zoo = new zookeeperdemo('127.0.0.1:2181');
$zoo->get( '/test', array($zoo, 'watcher' ) );
while( true ) {
  echo '.';
  sleep(2);
}
现在运行该脚本。
$ php zookeeperdemo1.php
此处应该会每隔2秒产生一个点。现在切换到zookeeper客户端,并更新“/test”值。
[zk: 127.0.0.1:2181(connected) 20] set /test foo
这样就会静默触发php脚本中的“insider watcher”消息。
怎么会这样的?进入while结构后,为什么还能执行watcher方法。请各位看官发表讨论。
回复讨论(解决方案) 分布式应用?
zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,包含一个简单的原语集,是hadoop和hbase的重要组件。目前提供java和c的接口。
你说是颠覆常识,也是可以理解的
不是谈分布式,分布式只是我业务需要而已。
颠覆的地方是 --
在php中,死循环的结构有机会执行循环外明显与循环无关的逻辑 -- 这是多线程的表现哦 -- 于是我们猜测这个zookeeper扩展是以多线程的方式在php环境中运行的。
watcher gets consumed so we need to set a new one
你做这个,应该比我还要清楚
php zookeeper 时时都在侦听 php 的行为
我不做这个,是刚打算做这个。
我的意思是,如果有人写调试一段php代码,发现在死循环的过程中,有机会执行与循环完全没关系的代码,不会感到奇怪吗?
主线程死循环中,子线程继续执行任务,这不是很正常么?
php中有个pcntl 能 fork出多进程执行
肯定不是fork
其它类似信息

推荐信息