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

ディレクトリを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 に答える
0

成功した場合は、オンラインで投稿されたファイルを書き込むことができれば、nfs-mountpointで実際に小さなファイルを書き込もうとします。

そうでない場合は、後で(自動)保存するためにwebserver-diskにキャッシュします。

于 2010-11-12T14:02:47.267 に答える