1

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

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

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

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

4

4 回答 4

2

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

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

于 2010-11-12T14:00:24.247 回答
1

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

if (!is_writable('/path/to/nfs/share/mount')) {
   die('NFS share is not writable!');
}
于 2010-11-12T13:59:40.247 回答
0

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

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

于 2010-11-12T14:02:47.267 回答
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);
    }
}
?>
于 2010-11-12T14:28:21.837 回答