0

I'm brand-spanking new to PHP, so please be gentle.

I'm trying to create a dynamically-populated page navigation for a frequently-updated site. I thought I'd use something like GLOB_ONLYDIR or is_dir (all the pages I'm looking for will be in their own directories) to generate an array that the navigation can build itself from, but from what I've read frequent calls to the server like that (scanning up to fifty directories, creating the array on every page visited, and who knows how many site visitors) can be taxing on the server.

Is this true? I'd like to avoid using an XML for the directory, but does calling php that often create a memory drain (on what is admittedly already a memory-heavy site - lots of motion graphics, transparencies, javascript animation, etc), or should it be no more a drain than your usual php page generation?

Thanks, ~gyz

4

4 回答 4

1

这样做很可能是构建导航结构的最明智的方法。必须对每个请求都执行此操作,可能不会那么多。

您应该建立某种缓存机制来处理这个问题。像这样:

if (!file_exists($cache_file || filemtime($cache_file) + $cache_lifetime > time()){
     // build your name and save it to the cache_file
}

// output your nav.
$fp = fopen($cache_file,"r");
fpassthru($fp);
$fclose;

当您添加文件并且想要使缓存无效时,只需将其删除,它将在下一次请求时自动重新生成。这也将在创建后过期并强制重新创建 $cache_lifetime 秒。

于 2013-06-19T18:13:23.507 回答
0
lots of motion graphics, transparencies, javascript animation, etc

上面提到的事情不会在服务器上造成消耗,而是在用户浏览器和计算机上消耗。并且有许多网站对 php 的调用比您在这里所期望的要多。它不会破坏您的服务器,所以不用担心。

但我建议您使用 json 或 xml 之类的东西。

于 2013-06-19T18:09:01.280 回答
0

是的,您应该避免扫描您的文件系统。实际上,您应该只在发生更改时刷新您的目录列表。如果您想避免使用 XML,您可以使用不同的方法,例如将序列化的嵌套 JSON 数组保存到文件中。

就内存消耗而言,您所说的那些东西(javascript、透明胶片等)是关于浏览器消耗的,而不是服务器

问候让

于 2013-06-19T18:09:01.640 回答
0

您可以做的一件事是缓存导航(创建 XML 或 HTML 内容本身)并让脚本每 24 小时更新一次。让您的主页在标题中包含缓存页面。

至于内存使用,您自己说这是一个内存密集型网站,所以是的,我认为每次加载网站上的页面时运行检查 50 多个目录的代码将是一个问题。

于 2013-06-19T18:09:31.420 回答