【问题标题】:Upgrading Olson tz database natively implemented in PHP升级 PHP 原生实现的 Olson tz 数据库
【发布时间】:2012-02-04 23:28:39
【问题描述】:

我正在开发一个大量使用时区的网站,该网站需要处于可用的绝对最新 tz 信息的最前沿(我已经通过tz mailing list 获得了这些信息)。我不知道的是如何让 PHP 安装在我的开发机器和我的 web 主机上运行,​​以使用更多最新的 tz 数据而不是它们上已有的旧数据。 这并不像升级 PHP 那样简单,因为即使是最新版本的 PHP 也不一定在任何给定时间都拥有绝对最新的 tz 数据。

有人指出,pecl 中的 timezonedb package 可以让我获得该软件包的最新官方版本,但如果我需要更进一步了解可能会出现的更新“前沿”怎么办?还没正式发布?我很确定更新的 tz 数据必须使用 zic(以 tzcode 分发)进行编译,并将生成的二进制文件提供给 pecl。我真的不知道这意味着什么,因此对于各个步骤的见解/链接将不胜感激。

如何在 (1) 一台 XAMPP 开发机器和/或 (2) 上升级这个由 PHP 实例本机使用的 Olson 数据库 一种典型的共享托管服务...... 同时尽可能少地跳过障碍和管理障碍? 是否有任何细节可能使共享托管环境变得更加困难,人们应该意识到这一点?存在多个数据副本是否可行,以便在以某种方式搞砸更改时可以轻松撤消更改?

由于更改有时无法及时正式发布以使其生效,因此我正在专门寻找一种能够自行进行这些更改的方法。我也有兴趣探索从“快速/简单”到“严格/最佳”的一系列可能解决方案的潜在权衡。

【问题讨论】:

  • 安装pecl包。然后只更新 pecl 扩展。见pecl.php.net/package/timezonedb
  • 看起来不错;我会编辑我的问题。但是,如果我需要比pecl 允许的更细粒度的控制,例如进行尚未正式发布的更改,该怎么办?
  • 自然而然地帮助PECL包,以便及时发布。只要在正确的地方参与,这就是我们使用免费软件的原因。这就是包装的目的。看起来它是您的用例。
  • 耶;我有参与的地方!!!! 我也已经在 tz 讨论列表上,但有时有些更新会影响当前时间戳,甚至没有及时发布 tz 更新,更不用说作为pecl 包。显然,参与其中将帮助我了解编译/安装过程的工作原理,并允许我在我真的需要它们时在本地安装自己的“测试版”版本。如果有人(也许是我后来的人)想尝试解决技术方面的问题,我会留下这个问题,因为这样的资源似乎很缺乏。
  • 您好,虽然用于翻译 Olson 时区数据库以生成 timezone*.h 文件的工具默认不随 PHP 分发,但您仍然可以在这里找到它们:svn.xdebug.org/cgi-bin/viewvc.cgi/timelib/trunk/zones/?root=php

标签: php timezone xampp shared-hosting pecl


【解决方案1】:

明确的答案

上面的 cmets 给出了比这更好的答案 - 查看 PECL 包 timezonedb

我已将其转换为社区 Wiki。


调查

来自php-5.3.8.tar.bz2 等包的分布式源包含ext/date/lib 目录和文件timezonedb.htimezonemap.hfallbackmap.h 中的Olson 数据库的翻译。这意味着 PHP 开发系统中的某处有代码从 Olson 数据库的版本中生成此信息,但默认情况下不分发。此外,它显然不是作为 SVN 的一部分分发的;我从修订版 321876 中提取了 PHP 5.3 源代码,ext/date 目录没有任何帮助(只是生成的文件)。

因此,询问 PHP 维护人员如何做可能是合适的;这当然应该是可能的,并且应该是自动化的(如果他们没有自动化,那将是愚蠢的)。但我不清楚 PHP 维护人员之外的那些人是否知道该怎么做。

NEWS 文件中的 cmets 表明 Derick Rethans 可能是一个很好的联系人 - 他将数据库更新为 Olson 2010c (2010.3)。您可以在源目录顶层的run-tests.php 文件中找到他在PHP 中的电子邮件地址;您可以在ext/date/lib 目录中的源中找到备用电子邮件地址。

Derick Rethans 在此处提供了用于从 Olson 数据库生成文件 timezonedb.h 的转换工具包:

http://svn.xdebug.org/cgi-bin/viewvc.cgi/timelib/trunk/zones/?root=php

截至 2016 年 12 月 9 日,上面的链接是 404,互联网档案馆的 WayBack 机器无法提供帮助,因为它不允许通过 robots.txt 文件进行搜索。

但是,Google 搜索“php timelib”会发现:

几乎可以肯定是替代品。

【讨论】:

  • 因为我在写答案时将其标记为 CW,AFAICT。
  • 我的意思是,不应该。社区 Wiki 应保留用于产生大量编辑和/或赞成票的帖子/问题,以免作者获得不公平的声誉。这里不是这样。我建议删除 CW 状态。
  • Rethans 帖子的链接已损坏 -.-
  • @user2070775:感谢您的提醒。我已经用新信息更新了答案,说明您现在可以(可能)从哪里获取代码。
猜你喜欢
  • 1970-01-01
  • 2011-02-06
  • 2011-12-01
  • 2013-01-12
  • 2018-03-15
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多