【问题标题】:Check if NFS share is up in PHP检查 NFS 共享是否在 PHP 中启动
【发布时间】:2010-11-12 13:52:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php error-handling nfs robustness


    【解决方案1】:

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

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

    【讨论】:

    • 我知道这是非常古老的,但是可以为此发布任何代码吗?我的脚本挂在fopen 调用点,所以我不能在上面设置stream_set_timeout
    • @BT643 查看default_socket_timeout
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我会尝试在 nfs-mountpoint 上写一个真正的小文件,如果成功,你就可以在线并且可以写发布的文件了。

      如果没有,请将其缓存在网络服务器磁盘中以供以后(自动)保存。

      【讨论】:

        【解决方案4】:

        检查是否可以 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);
            }
        }
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-12
          • 2017-09-09
          • 1970-01-01
          • 1970-01-01
          • 2012-03-25
          • 1970-01-01
          相关资源
          最近更新 更多