【问题标题】:How variables save non-scalar data变量如何保存非标量数据
【发布时间】:2013-12-29 20:55:06
【问题描述】:

对于变量如何将文本文件的数据存储到内存中,我有点困惑。

示例:

<?php
$varContent  = 'book.txt'; 

现在,我想澄清的是,$varContent 中存储了什么?是简单的字符串名称'book.txt' 还是文件中的文件类型、标题、信息是否存储在变量中?

使用变量存储文件的全部内容有哪些不利方面(如果有的话),它是否违反了某些约定或完全可以接受?

为了进一步阐明我的观点,如果我确实将如上所示的文件目标存储到一个变量中,并且我在我的类中使用了这个变量,是否存在某种内存限制或性能问题?因为,我认为将 string/int 分配给变量很好,因为内存占用很小,但在这里和那里调用,5MB .txt 文件可能不会。

所以,我只是想更好地理解这一点。 谢谢。

【问题讨论】:

  • 那只是一个字符串book.txt 8字节的数据。您需要将文件读入 var 以获取内容。

标签: php file variables memory memory-management


【解决方案1】:

这只是一个字符串。如果要加载文件,可以使用

$content = file_get_contents("book.txt");

(您将只获得内容,没有其他信息)。

【讨论】:

  • 除了内容之外,还有哪些其他信息?
  • 文件所有者、组、修改时间、某些权限等信息 - 这取决于您使用的操作系统。
【解决方案2】:

在您展示的情况下,唯一存储的是简单字符串。没有其他信息可以向 PHP 表明该字符串指的是一个文件。

编辑

要打开文件并在内存中保存元数据,请使用 SplFileObject 之类的内容。

<?php
$file = new SplFileObject("/etc/passwd");
$stat = $file->fstat();

【讨论】:

  • 如何使用 Martin 展示的方法,如果我要获取文件的所有组成部分,并且存储在一个变量中,并执行一些复杂的操作,是否会减慢内存速度。跨度>
  • 这将仅将文件的内容存储在内存中。文件元数据没有额外的存储空间。如果您对类似的东西感兴趣,请查看SplFileObject 等。这些对象会占用更多内存,但它们确实提供了您询问的元数据。
猜你喜欢
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 2011-09-24
  • 2020-11-22
  • 1970-01-01
  • 2015-09-15
  • 2016-12-03
相关资源
最近更新 更多