2009-11-27 64 views
3

我有一个缓存系统内建立的PHP存储在XML XML查询的结果。我通过创建带有独占写入句柄的锁定文件来构建高速缓存,然后在完成高速缓存文件后将其删除。如何确保文件句柄关闭,如果一个PHP脚本超时?

但是,有些时候脚本要么超时,要么暂停执行,而是让锁定文件保留原位,这样脚本的任何进一步执行都会认为缓存始终在更新。

我试图检查文件是一个分钟数旧,并试图获得独家写入访问该文件来刷新锁并开始执行,但它似乎该文件仍然打开与以前的句柄和我无法打开新的句柄,以确保当前进程是唯一一个访问并重新锁定文件的进程。

有没有一种方法可以确保脚本在执行过程中暂停,任何打开的文件句柄都会关闭,并且所涉及的文件可供将来的进程访问?

感谢

回答

3

PHP解释器退出时调用fclose()所有打开的文件,从而释放任何锁。也许你还没有找到正确的问题。

但是,在脚本终止之前需要清理某些内容时,请使用register_shutdown_function()。即使脚本终止并出错,注册的函数也会被调用。

+0

感谢回复Emil,我发现在检查卡住的锁定文件时,我在我的fopen上使用了错误的模式,无论我做了什么,它总是会返回false。 我现在正在努力改变这一点,并确保我得到的结果是正确的结果,而不是错误的结果 有时候发现实际问题比修复它,一旦你知道什么是错的。 – coffeecoder 2009-11-27 16:04:49

相关问题