2

これは非常に「そこにある」質問ですが、私は自分のアプリを単純化することを考えていました。これが可能であれば、物事を行うための本当にクリーンな方法になるでしょう.

注:不必要な最適化などに関するコメントは求めていません。そのことは十分承知していますが、これは最近考えていたことであり、それが可能かどうか疑問に思っていました。

背景情報:

Facebook や Google+ で見られるようなユーザーの「カバー写真」を想像してみてください。これらのアプリでは、プロフィール ページで画像を上下にドラッグして、画像の垂直位置を調整できます。

この機能は、私のアプリでもまったく同じです。ユーザーがプロファイル ページで画像をドラッグし、マウス ボタンを離すと、ajax 投稿がサーバーに送信され、新しい「トップ」値でデータベースが更新されます。

この「トップ」値は、必要に応じてデータベースから読み取られ、それに応じて css が設定されます。すべてが正常に動作します

質問:

これらすべてを念頭に置いて、PHP を介してメタデータをファイル自体に保存する方法はありますか。この場合、.jpg ファイルです。ファイルから特定のファイル情報データを読み取ることができることは知っていますが、これは直接カスタマイズできますか? 「top」という名前の単純なメタ データ プロパティを設定し、それに整数を指定して、データベースの必要性を完全にバイパスしてアプリ内でこれを読み取れるようにすることは可能でしょうか? もしそうなら、この方法に欠点はありますか?

もちろん、これが不可能/望ましくない場合は問題ありません。これも正解と言えるのですが、その理由を教えてください。

私が知っている珍しい質問。うまくいけば、誰かがこれについての洞察を得るでしょう。

4

4 に答える 4

2

画像に格納されているメタデータである exif データを操作できます。したがって、理論的には、メタデータ フィールドの最上位の値を「保存」できます... しかし。それをしないでください!1 つの整数を保存したいだけなので、コストがかかりすぎる可能性があります。標準的な方法でテストすることはできません。標準的な方法ではないため、適切に文書化しないと次の人が見逃してしまいます。データベース接続はとにかく開いています。ユーザーはメモリ内にあるため、ユーザープロファイルからこの値を読み書きすることは、実際には大したことではありません。全体として、オリジナルとはいえ、良い考えではないと思います。

于 2012-10-10T21:57:22.460 に答える
1

効率がそれほど必要でない場合は、serialize() と unserialize() を使用してこれを行うことができます。

function save( $file, $data ) {
    file_put_contents( $file, serialize($data) );
}

function load( $file ) {
    return( unserialize( file_get_contents( $file ) ) );
}

これにより、可変長および構成データ構造をファイルに保存/取得できます。制限として、ファイル ポインターやその他のリソース リンクをファイルにダンプすることはできず、バイナリ情報の保存で問題が発生する可能性があります。

これについてはよくわかりませんが、バイナリ情報がある場合は、最初に base64_encode() してから base64_decode() でデコードする必要があるかもしれません。

于 2012-10-10T21:57:36.103 に答える
0

おそらく可能ですが、このためのデータベースを使い続けることが最善の策だと思います。それはより理にかなっていて、より効率的だからです。

要点:データベースは簡単に索引付けできます

于 2012-10-10T21:49:47.787 に答える
0

または、これらの最新の NoSQL データベースの 1 つに興味があるかもしれません。Redisはこの種の用途に非常に適していると聞いています。

于 2012-10-10T21:52:39.120 に答える