如何在php中响应后调用析构函数?

时间:2013-11-07 07:57:51

标签: php apache optimization exit

我有一个聊天机器人,它将一些数据保存到用户正在发送的数据库中。我想在向用户发送响应后将其保存到db(慢速网络呼叫)。

我可以在Python Tornado中做到这一点,但我还没能做到PHP Apache。

用户根据请求发送输入 - >我们处理它 - >我们将输出作为响应发送给用户 - > 然后我们希望存储数据

  class A
  {
      function __construct()
        {
          echo "Hello World";
        }
      function __destruct()
        {
          sleep(15); //I want this to happen after response is being send
        }
      function calc()
        {
          echo "Progress World";
        }
  }

1 个答案:

答案 0 :(得分:0)

在删除对象,对象超出范围或正常脚本结束时调用

__destruct。如果脚本没有正常终止但​​被终止,则可能根本不会调用析构函数。

如果您只是想在特定点执行清理任务并确保它们被处理,请使用PHP 5.5引入的finally clause

来自PHP站点的__destruct示例:

<?php
class my_class {
  public $error_reporting = false;

  function __construct($error_reporting = false) {
    $this->error_reporting = $error_reporting;
  }

  function __destruct() {
    if($this->error_reporting === true) $this->show_report();
    unset($this->error_reporting);
  }
?>

请参阅PHP Documentation on destructors。我希望这会有所帮助。