我正在开发一个存储上传文件的系统。元数据将进入本地可访问的数据库,但文件本身将通过NFS存储在远程盒子上,以便PHP可以与服务器交互,就像它是一个目录一样。
我发现如果有人在NFS服务器关闭或以其他方式不可用时尝试上传文件时可能会出现问题,这可能导致脚本出错或挂起。显然,我们希望避免这种情况并以优雅的方式处理它,但我们不确定如何做到这一点。
我们正在考虑a)在页面显示时检查服务器,并在服务器关闭时重新显示表单的文件上载部分,或者b)在执行move_uploaded_file之前检查链接以存储上载的文档。
是否可以在PHP中执行此操作,如果是,如何执行此操作?
答案 0 :(得分:2)
结帐http://www.php.net/manual/en/function.stream-set-timeout.php
您可以编写一个简单的检查,尝试在2秒超时的情况下写入NFS共享。如果成功,请继续执行move_uploaded_file。如果失败,请给用户一个优雅的错误。
答案 1 :(得分:0)
我不知道您的设置是什么样的......如果您正在安装它,可以使用is_writable
吗?
if (!is_writable('/path/to/nfs/share/mount')) {
die('NFS share is not writable!');
}
答案 2 :(得分:0)
我尝试在nfs-mountpoint上写一个小文件,如果你在线成功,可以写帖子。
如果没有,请将其缓存在webserver-disk中以便以后(自动)保存。
答案 3 :(得分: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);
}
}
?>