finally子句替代脚本超时

时间:2011-05-18 11:13:52

标签: php cron

我正在训练一个PHP脚本作为一个表现良好的cron作业运行。为了逃避无限循环,我已经添加了set_time_limit

据我所知,PHP没有最终的子句功能。我希望有这样的功能来清理,比如在达到时间限制时取消链接文件。

实现这一目标的另一种方法是什么?

2 个答案:

答案 0 :(得分:3)

布鲁斯·阿尔德里奇已经回答了,如何达到目标 我告诉你另一种方式:RAII pattern(不是说更好或更坏) 例如:

class AutoUnlinker
{
    private $files;

    public function OpenFile($filepath, $mode)
    {
        $handler = fopen($filepath, $mode);
        $this->files[$filepath] = $handler;
        return $handler;
    }

    public function __destruct()
    {
        if (!empty($this->files))
        {
            foreach ($this->files as $filepath => $handler)
            {
                if (!empty($handler)) fclose($handler);
                if (file_exists($filepath)) unlink($filepath);
            }
        }
    }
}

如果此类将用于打开文件,则所有文件将在脚本终止时关闭和取消链接。此示例专门针对您的问题 - 通常使用1个对象来访问1个资源。

答案 1 :(得分:0)

http://php.net/manual/en/function.register-shutdown-function.php

实际上,这不会在脚本超时运行。 最好处理代码中无限循环的捕获。