升级本机在PHP中实现的Olson tz数据库

时间:2012-01-07 16:48:22

标签: php timezone xampp shared-hosting pecl

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

有人指出pecl中的timezonedb package会让我看到最新的正式版本,但是如果我需要更进一步来达到“前沿”的话可能还没有正式发布的更新?我很确定较新的tz数据必须使用zic(在tzcode中分发)进行编译,并将结果二进制文件赋予pecl。我真的不知道所有这一切,所以我们将非常感谢各个步骤的见解/链接。

如何在(1) XAMPP开发机器和/或(2)上升级本地由一个PHP实例使用的Olson数据库 一个典型的共享托管服务...... 尽可能少的箍和管理障碍?是否有任何特定的共享托管环境可能会让人更加难以理解?拥有多个数据副本是否可行,以便在某种程度上搞砸了它们时可以轻易撤消更改?

由于变更有时并未及时正式发布以使其生效,我正在寻找一种能够自行任意改变这种变化的方法。我也有兴趣探索从“快速/轻松”到“严谨/最佳”的一系列可能解决方案的潜在权衡。

1 个答案:

答案 0 :(得分:3)

最终答案

上面的评论提供了比这更好的答案 - 查看PECL包timezonedb

我已将此转换为社区Wiki。

<小时/>

调查

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

因此,向PHP维护者询问如何操作可能是合适的;它当然应该是可能的,它应该是自动化的(如果他们没有自动化将是愚蠢的)。但我不清楚PHP维护者以外的人可以告诉他们如何做到这一点。

NEWS文件中的评论表明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-09,上面的链接为404,互联网档案中的WayBack Machine无法提供帮助,因为它不允许通过robots.txt文件进行搜索。

然而,谷歌搜索了&#39; php timelib&#39;发现:

这几乎肯定是替代品。