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

检查PHP中的NFS共享是否已启动,php,error-handling,nfs,robustness,Php,Error Handling,Nfs,Robustness,我在一个系统,将存储上传的文件工作。元数据将进入一个本地可访问的数据库,但文件本身将通过NFS存储在一个远程框中,以便PHP可以像目录一样与服务器交互 我发现了一个问题,如果有人试图在NFS服务器关闭或不可用时上载文件,可能会导致脚本出错或挂起。显然,我们希望避免这种情况,并以优雅的方式处理它,但我们不确定如何才能做到这一点 我们考虑a)在页面显示时检查服务器并在服务器关闭时重影表单的文件上载部分,或b)在执行move_uploaded_file以存储上载的文档之前检查链接 是否可以从PHP内部

我在一个系统,将存储上传的文件工作。元数据将进入一个本地可访问的数据库,但文件本身将通过NFS存储在一个远程框中,以便PHP可以像目录一样与服务器交互

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

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


是否可以从PHP内部执行此操作,如果可以,如何执行

我不知道你的设置是什么样的。。。如果您正在安装它,是否可以使用
是可写的

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


您可以编写一个简单的检查,尝试以2秒的超时写入NFS共享。如果成功,请继续移动上传的文件。如果失败,给用户一个优雅的错误。

如果成功,我会尝试在nfs挂载点为real编写一个小文件,如果您在线并且可以编写发布的文件

如果没有,请将其缓存在Web服务器磁盘上,以便以后(自动)保存。

检查是否可以打开目录

<?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);
    }
}
?>

我知道这是非常古老的,但是有没有可能发布任何代码?我的脚本挂起在
fopen
调用点,因此我无法在其上设置
stream\u set\u timeout
。@BT643签出。