如果我可以fclose通过取消设置带有句柄的变量来省略命令,我有点困惑?
$handle = fopen($file);
...
fclose($handle);
... // script goes on for a long
Run Code Online (Sandbox Code Playgroud)
和....相比:
$handle = fopen($file);
...
unset($handle);
... // script goes on for a long
Run Code Online (Sandbox Code Playgroud)
任何人见解?
PHP 文档暗示所有没有剩余引用的资源都被“释放”,我假设对于文件句柄,这将包括关闭文件。
简单的测试用例:
$f = fopen("test.php", "r");
if (!flock($f, LOCK_EX)) {
print("still locked\n");
exit;
}
unset($f);
sleep(5);
print("goodbye\n");
Run Code Online (Sandbox Code Playgroud)
(我已将其保存为test.php,因此它会自行锁定;否则可能需要将 中的文件名更改为fopen()某个现有文件)
5秒内运行脚本两次;如果您“仍然锁定”,那么显然松开手柄并没有释放锁定。在我的测试中,我没有“仍然锁定”,因此显然取消设置句柄至少会释放锁,尽管在垃圾收集时释放锁而不关闭文件似乎很愚蠢。
| 归档时间: |
|
| 查看次数: |
1154 次 |
| 最近记录: |