检查 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 中启动的主要内容,如果未能解决你的问题,请参考以下文章