2

这是一个非常“不存在”的问题,但我一直在考虑在我的应用程序中进行一些简化,如果这完全可能的话,这将是一种非常干净的做事方式。

请注意:我不是在寻找有关不必要的优化等的评论。我很清楚这一点,但是这是我最近一直在考虑的事情,并想知道这是否可能。

背景资料:

如果您想象用户的“封面照片”类似于在 Facebook 和 Google+ 上看到的照片。在这些应用程序中,您可以通过在个人资料页面上向上或向下拖动来调整图像的垂直位置。

此功能在我的应用程序中完全相同。用户在他们的个人资料页面上拖动图像,当他们放开鼠标按钮时,一个 ajax 帖子被发送到服务器,并使用新的“顶部”值更新数据库。

在需要时从数据库中读取这个“顶部”值,当然 css 也会相应地设置。一切正常

问题:

因此,考虑到所有这些,有什么方法可以通过 PHP 将元数据存储到文件本身。在这种情况下,一个 .jpg 文件。我知道您可以从文件中读取某些文件信息数据,但这可以直接自定义吗?是否可以设置一个名为“top”的简单元数据属性并给它一个整数,从而允许在应用程序中读取它而完全绕过对数据库的需求?如果是这样,这种方法有什么缺点吗?

如果这当然是不可能/不可取的,那很好。这也将被视为正确答案,但请解释原因。

我知道一个不寻常的问题。希望有人对此有所了解。

4

4 回答 4

2

您可以操作 exif 数据,这是存储在图像中的元数据。所以理论上你可以“保存”元数据字段中的最高值......但是。不要这样做!由于您只想保存一个整数,因此可能会过于昂贵。您无法以标准方式对其进行测试,这不是一种标准的做事方式,因此如果您没有很好地记录它,下一个人会错过它,等等。您的数据库连接无论如何都是打开的,很可能您有用户在内存中,所以从用户配置文件中写入和读取这个值真的不是什么大事。总而言之,我认为这不是一个好主意,即使它是原创的。

于 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 数据库中的一个感兴趣——我听说Redis非常适合这种事情。

于 2012-10-10T21:52:39.120 回答