检查 NFS 共享是不是在 PHP 中启动

Posted

技术标签:

【中文标题】检查 NFS 共享是不是在 PHP 中启动【英文标题】: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 中执行此操作,如果可以,如何操作?

【问题讨论】:

【参考方案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);
    

?>

【讨论】:

以上是关于检查 NFS 共享是不是在 PHP 中启动的主要内容,如果未能解决你的问题,请参考以下文章

AIX下NFS共享设置

检查 NFS 共享是不是安装在 python 脚本中

linux中使用nfs共享文件

在kubernetes中部署kubersphere

Linux下的NFS搭建配置

kubernetes集群搭建Zabbix监控平台