2011-07-12 11 views
3

私たちはサーバー上に機密ファイルを持っています。これらは、ログインしたユーザーだけがアクセスできるようにするため、ユーザーがこれらのファイルを表示する権限を持っているかどうかを確認するPHPスクリプトを使用してアクセスします。その後、readfile()というファイルを提供します。PHPのvirtual()関数はサーバのメモリを節約しますか?

readfile()はファイル全体をメモリにロードして提供しますが、virtual()はそれを直接サーバーから提供し、サーバーのメモリへの負荷を軽減すると私は理解しています。 readfile()は現在問題なく動作していますが、新しいクライアントはもっと大きなファイルで同じ機能を望んでおり、virtual()に移動する方が良いかどうか疑問に思っていました。

  1. readfile()virtual()正しいの私の理解ですか?
  2. キャッシングなどの問題がありますか?それとも私が考えていない何か?

答えて

3

はい、正しいです。 virtual()はPHPのメモリ使用量を減らしますが、Apacheは追加のリクエストを1回発行します。

より良い方法は、Apache X-Sendfileモジュールです。 PHPから行う必要があるのは、header()コールで、PHPではなくApacheがあなたのためにファイルを提供します。それはより少ないリソースを使用します。

Here's a tutorial

+0

リンクが壊れています。 – TRiG

+0

ええ、Apache X-Sendfileを使用するか、またはnginx X-Accel-Redirect http://wiki.nginx.org/XSendfileにある場合 – pt2ph8

+0

http://www.jasny.net/articles/how-i- php-x-sendfile。私はこれをあなたの答えに編集しようとしましたが、編集は6文字以上でなければならないと言われました。 – TRiG

関連する問題