PHP - 如何检查脚本版本

时间:2009-10-31 00:36:14

标签: php version

我有一个小脚本,想要从管理页脚检测脚本版本。在admin footer.php上我放了这段代码。

<?php
  define('VERSION', '1.0');
  $fp = fopen("http://v.domain.com/version.txt", "r");
  while ($line = fgets($fp)) {
      $line;
      if (VERSION != $line) {
?>
<div id="upgrade">
<a href="http://domain.com/download/" target="_blank">Download a new version [<?php echo $line; ?>]</a>
</div>
<?php
      }
  }
?>

在version.txt中只有1.0.1并且可以正常比较版本。

问题在这里,客户端网站会变慢。如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

它很慢的原因是因为运行PHP代码的服务器必须通过HTTP访问v.domain.com并下载version.txt的副本。在发生这种情况时,PHP正坐在那里等待它。

为什么这会使整个页面变慢,即使它在页脚中?因为Apache会在将PHP页面输出到浏览器之前缓存PHP页面的输出。即使你刷新输出缓冲区,有时浏览器也会这样做,这是你无法控制的东西。

听起来你想要发布一些基于PHP的工具,并在页脚中进行自动版本检查,对吗?

如果是这样,那么按照你的方式做这件事有几个问题:

  1. 每次加载页面时都无需检查版本。保存您在某处检查的最后日期,并且仅在___天之后再次检查。 (希望你已经这样做了,为了简单起见,只是从示例中删除它)

  2. 从另一台服务器读取这样的文件是个坏主意。正如您现在遇到的那样,如果您的v.domain.com忙碌,可能会导致速度减慢。如果它发生故障,那么你的PHP将花费更长的时间,因为它正在等待超时。

  3. 更好的方法是通过Javascript。加载页面后,您将拥有一个使用AJAX的javascript函数。如果您不熟悉Javascript,虽然可能会有一些学习曲线,但这是处理您情况的理想方式。

答案 1 :(得分:2)

如果文件只是版本号,那么我建议尝试:

file_get_contents()

$version = file_get_contents('http://wwww.example.com');
if (VERSION != trim($version)) {
}