草庐IT

php - 升级在 PHP 中 native 实现的 Olson tz 数据库

coder 2024-04-17 原文

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

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

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

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

最佳答案

确定的答案

上面的评论给出了比这更好的答案——看看 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 月 9 日,上面的链接是 404,Internet Archive 的 WayBack Machine 无能为力,因为它不允许通过 robots.txt 文件进行搜索。

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

这几乎可以肯定是替代品。

关于php - 升级在 PHP 中 native 实现的 Olson tz 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8771316/

有关php - 升级在 PHP 中 native 实现的 Olson tz 数据库的更多相关文章

  1. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  3. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  4. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  5. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  6. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

  7. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  8. ruby - 在不使用 RVM 的情况下在 Mac 上卸载和升级 Ruby - 2

    我最近决定从我的系统中卸载RVM。在thispage提出的一些论点说服我:实际上,我的决定是,我根本不想担心Ruby的多个版本。我只想使用1.9.2-p290版本而不用担心其他任何事情。但是,当我在我的Mac上运行ruby--version时,它告诉我我的版本是1.8.7。我四处寻找如何简单地从我的Mac上卸载这个Ruby,但奇怪的是我没有找到任何东西。似乎唯一想卸载Ruby的人运行linux,而使用Mac的每个人都推荐RVM。如何从我的Mac上卸载Ruby1.8.7?我想升级到1.9.2-p290版本,并且我希望我的系统上只有一个版本。 最佳答案

  9. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  10. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

随机推荐