检查PHP中的NFS共享是否已启动

时间:2010-11-12 13:52:23

标签: php error-handling nfs robustness

我正在开发一个存储上传文件的系统。元数据将进入本地可访问的数据库,但文件本身将通过NFS存储在远程盒子上,以便PHP可以与服务器交互,就像它是一个目录一样。

我发现如果有人在NFS服务器关闭或以其他方式不可用时尝试上传文件时可能会出现问题,这可能导致脚本出错或挂起。显然,我们希望避免这种情况并以优雅的方式处理它,但我们不确定如何做到这一点。

我们正在考虑a)在页面显示时检查服务器,并在服务器关闭时重新显示表单的文件上载部分,或者b)在执行move_uploaded_file之前检查链接以存储上载的文档。

是否可以在PHP中执行此操作,如果是,如何执行此操作?

4 个答案:

答案 0 :(得分:2)

结帐http://www.php.net/manual/en/function.stream-set-timeout.php

您可以编写一个简单的检查,尝试在2秒超时的情况下写入NFS共享。如果成功,请继续执行move_uploaded_file。如果失败,请给用户一个优雅的错误。

答案 1 :(得分:0)

我不知道您的设置是什么样的......如果您正在安装它,可以使用is_writable吗?

if (!is_writable('/path/to/nfs/share/mount')) {
   die('NFS share is not writable!');
}

答案 2 :(得分:0)

我尝试在nfs-mountpoint上写一个小文件,如果你在线成功,可以写帖子。

如果没有,请将其缓存在webserver-disk中以便以后(自动)保存。

答案 3 :(得分:0)

检查是否可以opendir()目录?

<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        // do your stuff
        closedir($dh);
    }
}
?>