我正在开发一个非常小的库,用于跨PHP进程进行异步调用,并且在引用对象(和数组 - 无论是引用对象还是数组时都会遇到同样的问题)时会遇到一些奇怪的行为。最终结果是对象和数组暂时显示为空,我试图找出发生这种情况的原因。
下图显示了从父进程生成3个子节点的脚本跟踪。所有输出都来自父进程(没有任何内容通过子进程泄漏到终端)。父进程向子进程发出一系列请求,并通过一对FIFO管道接收响应:
问题说明如下:
在每个绿色环中,您可以看到我们引用相同的对象,因为这是PHP提供的内部ID引用。在带有绿色环的第一行中,对象具有应该具有的所有属性。
在每个红色环中是“失败”的RPC的ID,因为在带有绿色环的第二行中,对象神秘地清空。
稍后在这个过程中,在带有绿色环的第三行中,该对象神奇地重新拥有其所有属性。