【发布时间】:2015-07-09 17:14:27
【问题描述】:
我有一个输出 XML 的 PHP 页面。但出于效率原因,最好提供一个 XML 页面。正确的?
XML 是播客 RSS 数据。 http://kansaspublicradio.org/widgets/podcasts/retro-cocktail-hour.php 还有一个就像它用于不同的节目一样。 PHP 代码从我们的 CMS (drupal) 收集数据并将其放入 iTunes 特定的 XML 标记中。我发现这是一个比任何可用的 drupal 模块更好的解决方案。
但是使用 PHP 文件提供 XML 有点不合常规。并且该 PHP 代码将在任何人或任何事物(即 iTunes 或 feedburner)发出对 RSS 数据的请求时执行。 PHP 代码只是查询数据库,然后循环遍历结果以编写 XML 标记,但每次仍然存在固有的内存和 sql 性能损失。
所以我需要提供一个静态 XML 文件。如何将 PHP 的输出保存到文件中??
我想我将创建另一个 PHP 脚本,例如 makepodcast.php,它运行原始 PHP 页面,但将其输出打印到 XML 页面。然后我可以做一个每周执行一次的 cron 作业(节目每周录制一次)。
但我迷失的是我究竟如何保存 PHP 的输出并将其写入另一个文件??
【问题讨论】:
-
我不会认为 php 服务 XML “非常规”。 XML 与 HTML 非常相似(甚至 XHTML is XML),并且提供 HTML 并没有什么不合常规的地方。如果您的所有提要都是从数据库中提取并回显结果,那么这几乎是 PHP 所做的最基本的事情。
-
你说得对,总的来说。我想我应该更清楚一点。不同寻常的是,当某人或某物单击 RSS 数据的链接时,他们将得到一个 PHP 页面而不是 XML 页面。他们会期待一个 XML 页面。这是特定于播客的。我想尽快将它提交给 iTunes,它可能会混淆这该死的东西。 iTunes 很挑剔....
-
你在使用 XML 库吗?
-
如果您发送一个 XML 标头并使用 mod_rewrite 将
feed.xml重写为feed.php,则无法判断该文件不是磁盘上的 xml 文件。我并不是说不应该缓存该文件。如果底层提要数据不经常更新,写入文件将是一件好事。只是说这对于 php 来说非常常见且易于处理,并且您可能会添加不必要的额外复杂性。