2012-04-24 8 views
1

ウェブサイトのユーザーが画像をアップロードできるようにしてから、PHPスクリプトを使用して画像を配信します。ただし、これは静的リンクよりも著しく遅いです。PHPを使った画像の処理が遅い

イメージを保存するためにPHPを使用するのは、イメージを格納するフォルダに人々がアクセスできないようにするためです。

.htaccessファイルを使用する必要がありますか?私はまた、httpdのALIASについて考えていますが、これをどうやって使うのか、あるいはそれが適切かどうかはわかりません。これを使ってルート外のフォルダを参照できますか?

ご協力いただければ幸いです。

​​

その後、ユーザーがフォルダにアクセスすることができますが、それには何も見ることができません。

おかげ

header("Content-type: " . filetype($file) . "\n"); header("Content-Disposition: inline; filename=\"{$image}\"\n"); header("Content-Length: ".(string)(filesize($file))); @readfile($file);

+0

どれくらい遅いですか?遅すぎるべきではありません。ちょっとしたヒントは、最初にファイルを開くことです.HPには、PHPが実行されている間にHDDをキャッシュに移動するための時間が少しあります。その結果、ファイルがキャッシュに多く格納され、読む。 :) – DanRedux

+0

あなたのコードを投稿してください。 「遅いです」というメッセージが表示されない場合は、 –

+0

のファイルを読むために 'readfile()'を使用してください。しかし、ええ、htaccessは大いに役立ちます。実行中のすべてがブラウザに直接渡されている場合は、 'file_get_contents'を使用しないでください。 –

答えて

3

は、1行を持つ.htaccessファイルを使用してください。

また、インデックスを無効にするDirectoryタグ内

4

使用Options -Indexesindex.htmlというファイルを追加しますが、空白のまま(あるいは「あなたがこのページを閲覧しないことがあり、」メッセージが含まれます)。しかし、これ以上のステップを進める必要があります。

セキュリティと一般的なファイルシステムの衛生上の理由から、アセット(イメージなど)をコードとは別のディレクトリに保存する必要があります。

次に、あなたのApacheの設定にこれを追加することができます。

<Directory /directory/where/assets/are> 
    Order Allow,Deny 
    Allow from all 
    Options None 
    AllowOverride None 
    <IfModule mod_php5.c> 
     RemoveHandler .php 
     RemoveType .php 
     php_flag engine off 
    </IfModule> 
</Directory> 

これはあなたの資産のディレクトリだけでなく、無効のファイルリスト内のスクリプトなどのファイルのいずれかの実行を無効にしますが、誰もがこれらのファイルをダウンロードすることができます。このようにしてユーザがアップロードしたファイルでディレクトリを保護することが重要です。悪意のあるPHPスクリプトをアップロードしてホストすることができるからです。

+0

これはうれしいことです。私は、静的な画像を読むのが大切で、PHPが遅すぎるので、静的な画像を提供するべきだと思っています。ランダムにファイル名を生成し、上記のディレクトリに格納します。それがうまくいくと思いますか? – tommyd456