【问题标题】:How do i handle heavy page loads with php [closed]我如何使用 php 处理繁重的页面负载 [关闭]
【发布时间】:2012-03-10 18:03:31
【问题描述】:

我有一个在用户网上商店生成产品 xml 的脚本。现在,需要使用 php 将这个 xml 从浏览器读取到 mysql 数据库中。问题是,有时 xml 的大小在 (MegaBytes) 中是如此之大,以至于

  1. 即使已构建,它也不会打印在用户的网站上

  2. 由于其重量和服务器与浏览器超时而未通过。

我了解到这些补救措施可能会有所帮助。

  1. 增加我用来访问和解析 xml 的机器的 CPU
  2. 增加浏览器的缓存

我已经做了所有这些,但仍然无法有效。还有其他解决方案吗?

【问题讨论】:

  • 也许将此文件上传到服务器可能会有所帮助?
  • 所以你有两个脚本,一个生成xml,另一个通过HTTP读取xml然后插入数据库?你在哪里得到超时? xml的大小是多少?
  • 在生成 xml 和解析时会发生超时。但主要是在 xml 生成中。有时大小约为 20MB
  • @k102:请进一步解释。问题确实在 xml 的生成中。由于超时,它需要很长时间和休息。
  • 对不起,我认为问题在于解析这个文件。你能显示生成脚本吗?

标签: php xml-parsing html-parsing


【解决方案1】:

我建议不要使用 XML 将大量数据从一台服务器传输到另一台服务器。试试this link about mysqldump

如果您必须使用 XML 来交换数据,请考虑对其进行压缩以减小 XML 转储的大小。

您也可以尝试不要将整个产品列表转移到一个,而是以大约 100 个产品的块形式转移。

你能解释一下浏览器是如何与这个问题相关的吗?您是否在浏览器中手动调用 XML 生成脚本,然后将 XML 发送到第二个服务器?

【讨论】:

  • 也可以考虑在服务器端压缩一个 XML 文件
  • “考虑压缩”是的。 zip、gzip、rar、放气、bzip2、...
  • @Basti:谢谢。 xml 的链接位于客户端的服务器中。现在,我必须阅读链接并解析它。由于 XML 是标记的,因此需要先在浏览器上打印,然后才能保存或解析它。所以我的解析浏览器应该有一个很好的缓存,CPU mgt 以便读取所有数据。
  • 您不必在浏览器中显示 XML 即可将其导入数据库。您可以让您的服务器直接获取 xml 数据(file_get_contents($uri)),解析它(例如使用php.net/manual/de/book.simplexml.php)并一次性导入。
  • 浏览器通常不会像 70MB xml 数据库那样显示大量标记。让浏览器显示 70MB 的 html/xml 文件可能需要很长时间,而让服务器解析和导入相同的文件可能只需要几秒钟。
【解决方案2】:

20MB 并不是那么大。要解决生成或解析 xml 时的超时问题,请尝试增加时间限制,例如:

set_time_limit(300);

将时间限制设置为 5 分钟。

如果还不够,请查看您的脚本,它们可能需要优化。

【讨论】:

  • 是的,我也增加了。但正如你所说,它与优化有关。
  • 还有其他70MB大的文件
  • 你会得到什么样的超时?您可以在此处复制/粘贴错误消息吗?
  • 它并没有真正打印出来,而是挂起。也就是说,xml打印在浏览器和缓存中占用了很多内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2013-02-24
相关资源
最近更新 更多