【问题标题】:Best way to handle cross server php includes处理跨服务器 php 的最佳方法包括
【发布时间】:2011-06-22 01:46:36
【问题描述】:

这是一个两部分的问题...

1) file_get_contents 是否创建服务器负载?我在我的博客侧边栏中使用了 3 次以上来通过我的博客网络拉出广告,但现在网络速度变慢了。我想确定这不是原因。

2) 处理跨服务器的最佳方法是什么?就像我上面所说的,我正在使用 file_get_contents,并且可能以非常糟糕的方式进行操作。查看我的一些代码,我会看到:

<?
$c = file_get_contents("http://www.url.com/includes/include1.php");
echo ($c);
?>  
<?
$c = file_get_contents("http://www.url.com/includes/include2.php");
echo ($c);
?>  

我现在明白这很草率,因为它会在您不需要时打开和关闭 php,而且它会将两个不同的 URL 放在同一个变量下。这让我想知道它在这一点上是如何工作的。

无论如何,我正在为我的跨服务器包含问题寻找最佳解决方案,这有望降低我的服务器在较重负载下的拖累。

谢谢!

【问题讨论】:

  • 应避免站外包含。它们不仅速度慢,因为服务器必须通过网络进行连接,而且它们还在您的应用程序中打开了巨大的攻击向量。你到底在用它们做什么?可能有更好的方法。
  • 如果你只是嵌入内容,那么考虑使用 iframe 或 jQuery .load() 来插入文本。
  • OP 在这里 - 对于 Deceze,我只是包括在我的网络中重复的内容。 IE,如果我有一个顶部菜单将我的网络链接在一起,或者一个 RSS 框,或者一个广告广场。这样,如果我必须做一个小改动,我只需更改一个文件而不是 50+。如果有更好的方法,我会跳过那个

标签: php include file-get-contents


【解决方案1】:

您不应允许跨服务器包含。什么会阻止您以外的其他人阅读您的 PHP 文件的内容?

至于您最初的问题:如果您担心响应能力,请通过 Ajax 加载您的广告(我推荐 jQuery)。这样一来,真实内容将很快加载,广告很快就会到达。

另一个需要考虑的选择是以某种方式缓存您的广告。

【讨论】:

  • 对.. 现在我的 php 文件非常无害,理论上它们应该是文本文件,但你是对的。您是否知道一次更新多个页面的好方法,比如广告等?谢谢!
  • 您的广告与页面是否在同一台服务器上?还是外部域,例如您使用的是 Google AdWords?
【解决方案2】:

更好的方法是让单独的脚本获取该信息,然后将其缓存在服务器上的文件中。然后提供该缓存文件。 cron 作业可以不时刷新缓存,您网站的性能完全独立于广告服务器的可用性。就目前而言,如果广告服务器关闭,您的脚本将挂起,直到请求超时,您的用户将永远站在空白屏幕上。

【讨论】:

  • 好吧,这都是同一台服务器的一部分,但你是对的,当我扩展时,我确实计划拥有多台服务器,最终会导致这个问题。你能告诉我怎么做吗?
猜你喜欢
  • 2017-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多