Runkit Sandbox:使用父类的实例?

时间:2014-12-06 23:14:32

标签: php runkit

以下代码......

function getInstance() {
  echo "(getInstance() called)\n";

  return new TestClass();
}

class TestClass {
  function someMethod() {
    echo "someMethod called. Awesome!\n";
  }
}

$sandbox = new Runkit_Sandbox();
$sandbox['parent_access'] = true;
$sandbox['parent_call'] = true;

$sandbox->eval(
  '$PARENT = new Runkit_Sandbox_Parent; '.
  '$PARENT->getInstance()->someMethod();'
);

在PHP 5.4.10版本中导致此输出:

(getInstance() called)
PHP Warning:  Runkit_Sandbox::eval(): Error executing sandbox code in /home/projpf/_test/sandbox_test2.php on line 24

显然,无法从已在沙箱外声明的沙箱中调用方法。 这是Runkit的限制还是我做错了什么?

如果您想知道我想要做什么:我想将我的PHP网页脚本转换为通过RabbitMQ接受HTTP请求的长期工作人员。这些脚本有时必须进行大量初始化,这些初始化可以作为变量缓存,但不能通过任何外部缓存进行缓存。沙箱将允许工作进程加载正确的处理程序脚本而不留下任何痕迹 - 除了应该明确缓存的数据,在这种情况下将是大量的类实例。

0 个答案:

没有答案