【问题标题】:Can this PHP Script be killed?这个 PHP 脚本可以被杀死吗?
【发布时间】:2011-05-13 19:39:20
【问题描述】:
<?php

class Test {

    public function foo() {
        echo "Foo!";
        die();
    }

    public function __destruct() {
        header('location: http://google.com');
    }

}

$Test = new Test;
$Test->foo();

我有一个类,它简单地分配各种 Session 变量,然后将用户 ping 回他们以前的脚本。我认为在 destruct 上使用单个重定向而不是 10 行说同样的话会更简单。

我后来在我的脚本中发现了一个错误,发现它几乎无法杀死。以供将来参考,无论如何要杀死这个脚本还是会一直重定向?

为了澄清,脚本总是重定向,即使使用 die(),在 foo 函数中退出。

【问题讨论】:

标签: php destructor


【解决方案1】:

$Test 对象在浏览器断开连接时被破坏:它不会重定向,因为浏览器不会收到标头!但是,如果你明确地unset($Test);,它会

UPD:我错了:脚本会在浏览器仍然连接的情况下调用所有析构函数。但是,我不会依赖它

【讨论】:

  • 脚本总是重定向。我原以为上面的预期操作会在打印 Foo 后减半
  • @JasonS:如果打开输出缓冲,重定向仍然会发生。在 php.ini 中有一个 setting ;也许就在这里?
猜你喜欢
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多