1

PHP の md5_file 関数を使用して、リモート ソースからいくつかの zip ファイルの内容をハッシュしようとしています。

md5_file($url);

いくつかの URL で問題が発生しています。次のエラーが表示されます。

Warning: md5_file($url): failed to open stream: HTTP request failed!

これらの場合、zipファイルが非常に大きいためだと思います

しかし、私の理論を確認または反論するためのリモートファイルをハッシュする md5_file に関する多くの情報やケーススタディをまだ見つけることができませんでした。ほとんどの人はファイルを取得してローカルでハッシュしているようです (必要に応じて実行できます)。

だから私はそれが本当に好奇心からだと思います.md5_fileには、リモートファイルの大きさに特定の制限がありますか? 大きなファイルのダウンロードを停止するタイムアウトはありますか?

4

3 に答える 3

0

一部のホスティング環境では、この方法でリモートファイルにアクセスすることはできません。MD5関数は関数と同じように動作すると思いますfile()。最初に、そのコマンドを使用してリモートファイルの内容にアクセスできることを確認してください。そうでない場合は、ファイルとその内容にCURLすることができる場合があります。

于 2010-07-06T02:06:39.270 に答える
0

おそらく最も簡単な解決策は、次の方法でタイムアウトを自分で設定することです。

ini_set('default_socket_timeout', 60);  // 60 secs

もちろん、これらのファイルが大きい場合は、別のオプション としてfile_get_contents()を使用することもできます。これは、ファイル サイズの制限を指定できるためです。次のようにラップする方が効率的であるため、これを値に割り当てたくありません。

$limit = 64 * 1024; // 64 being the number of KB to limit your retrieval
md5(file_get_contents($url, false, null, 0, $limit )); 

ファイルの一部から MD5 を作成できるようになりました。誰かが 2 GB のファイルを送ろうとしても心配する必要はありません。もちろん、それはファイルの一部の MD5 にすぎないことに注意してください。その後何かが変更された場合、これは壊れます。ファイルサイズの制限を設定する必要はまったくありません。次のようにしてみてください。

ini_set('default_socket_timeout', 60);  // 60 secs
md5(file_get_contents($url));
于 2010-07-01T21:14:10.083 に答える
0

set_time_limit(0);ファイルが比較的大きく、消費する時間がはっきりしない場合は、試すことができます

于 2011-11-11T21:03:41.373 に答える