懒癌发作1年多,再次回来写随笔。(上次是16年,再上次是13年,好像懒的没救了)

这回遇到一个系统前端展现的时间在无规律抖动的问题;

前端php环境是5.3,运行于apache上,php.ini中已经设置了date.timezone="Asia/Shanghai",php中不显示设定任何的date_default_timezone_set();

使用phpinfo查看,date.timezone确实是上海,但Default timezone就时不时飘到了太平洋去;

同事帮我分析了一下,并给了官方文档说明default timezone的选定顺序,http://php.net/manual/zh/function.date-default-timezone-get.php

date_default_timezone_set() > 环境变量TZ > date.timezone > 查询操作系统;(php version < 5.4)

or

date_default_timezone_set() > date.timezone;(php version >= 5.4)

同事怀疑我有定时程序在不断修改环境变量TZ,但是apache是通过发行版的源安装的,apache用户更是nologin,没有机会启动定时程序进行环境变量修改;一时无果;

后来又仔细分析了phpinfo的区别,发现当时区飘到太平洋的时侯,php的Environment里面确实会出现一条TZ变量,正常时没有;

同时一起出现的新增环境变量还有一个django.setting,我才突然想起来,这个apache服务器后面还跑着一个python(django)项目,然后到那个django项目中一查,确实设定了一个错误的时区;

把django.setting中的错误时间给改过来后,过一点时间后(可能是在等缓存过期),时区抖的问题就消失了;

于是从头疏理一遍问题发生的过程:

  • apache后面跑了两个项目:一个php项目,一个python项目;
  • python项目的wsgi模式设置的为WSGIScriptAlias;
  • php版本为5.3;
  • python项目会在运行中修改环境变量TZ(受django设定),如果一个apache子进程运行了这个python项目,这个子进程就会增加一个TZ环境变量;
  • php项目不显式设定date_default_timezone_set,当它运行于一个全新的apache子进程中时,会使用date.timezone,而当它运行于一个已经运行过python项目的apache子进程中时,会看到TZ环境变量,从而拿到错误的timezone;

于是,我也就明白了为啥从php 5.4开始抛弃TZ了;

处理php出现default timezone抖动的问题的更多相关文章

  1. PHP Warning: phpinfo(): It is not safe to rely on the system's timezone setting

    错误描述: PHP Warning:  phpinfo(): It is not safe to rely on the system's timezone settings. You are *re ...

  2. Airflow 使用随笔(内含 TimeZone 和 Backfill 等的详解)

    其实怎么部署  airflow 又哪些特性,然后功能又是如何全面都可以在 Reference 的文章里面找到,都不是重点这里就不赘述了. 这里重点谈一下我在部署完成仔细阅读文档之后觉得可以总结的一些东 ...

  3. 一文读懂,硬核 Apache DolphinScheduler3.0 源码解析

    ​ 点亮 ️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler 本文目录 1 DolphinScheduler的设计与策略 1.1 分布 ...

  4. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

  5. 初识Azkaban

    先说下hadoop 内置工作流的不足 (1)支持job单一 (2)硬编码 (3)无可视化 (4)无调度机制 (5)无容错机制 在这种情况下Azkaban就出现了 1)Azkaban是什么 Azkaba ...

  6. Wiki安装(PHP +Sqlite+Cache)

    前期准备 PHP http://windows.php.net/download   WinCache Extension for PHP URL:http://sourceforge.net/pro ...

  7. Django 1.10 中文文档------3.2.1 模型Models

    3.2.1 models模型 通常一个模型映射一张单独的数据表. 基本概念: 每个model都是django.db.models.Model的子类 model的每个属性代表数据表的某一列 Django ...

  8. zabbix3.0安装【server】

    关于zabbix的介绍,就不多说了,功能强大,架构前卫,自己直接去官网研究 在这里,还是秉承研究一个应用或者技术,都要自己动手安装部署,实战操作,才能深入掌握,基于这个精神,zabbix从安装部署开始 ...

  9. CentOS 7 用户怎样安装 LNMP(Nginx+PHP+MySQL)

    关于 Nginx (发音 “engine x”)这是一款免费.开源.高效的 HTTP 服务器,Nginx是以稳定著称,丰富的功能,结构简单,低资源消耗.本教程演示如何在CentOS 6.5服务器(适用 ...

随机推荐

  1. 动态规划:给出两个字符串s1和s2,返回其中最大的公共子串

    求公共子字符串问题(连续的) 这个题目是当时远景能源公司现场笔试的一道题目,当时根本就不知道动态规划是什么鬼,直接上来就暴力求解,面试官很谄媚的问我,你这能求出来吗?当时很年轻的说,能啊!现在想,当时 ...

  2. 2010_3_1最新 完整 FFMPEG 编译详解

    在网上看了很多编译详解,都很零散.经过自己的编译,解决一些BUG,在此分享自己的一些经验... 话不多说了!直接上贴. 第一步:准备编译平台. 需要 一个 MinGW 和 一个 MSYS 安装包 以及 ...

  3. 中国的UED们

    UED网址导航:http://www.ux265.com/ 天猫UED:http://ued.tmall.com/ 一淘UED:http://ux.etao.com/ 淘宝UED:http://ued ...

  4. txtbook简单HTML可读化改造

    一般来讲下载的txtbook在notepad或者之类的文本编辑器下的阅读体验不是很好,PC上面专门装个txt阅读器好像有点杀鸡用牛刀,可以用HTML简单处理一下就可以放在浏览器下爽快的阅读了,这个操作 ...

  5. Python自学编程开发路线图(文中有免费资源)

    Python核心编程 免费视频资源<Python入门教程>:http://yun.itheima.com/course/145.html Python 基础学习大纲 所处阶段 主讲内容 技 ...

  6. 一个简单的PHP模板引擎

    PHP早期开发中通常是PHP代码和HTML代码混写,这也使代码中充斥着数据库操作,逻辑处理等.当项目不大时,这样的代码还可以接受,但是随着项目不断扩大,我们就会发现同一个文件中同时存在前端逻辑和后端处 ...

  7. lvs与nginx区别

    lvs和nginx都可以用作多机负载方案,他们各有优缺点,在生产环境中需要好好分析实际情况并加以利用. 一.lvs的优势: 1.抗负载能力强,因为lvs工作方式的逻辑是非常简单的,而且工作再网络层第4 ...

  8. JS跨域:1.解决方案之-SpringMVC拦截器

    一 拦截器代码 package com.wiimedia.controller; import java.util.List; import javax.servlet.http.HttpServle ...

  9. 拿到月薪30K,必选一些Python好书!

    论述: Python是所有编程语言中与人工智能最紧密相连的编程语言,阿尔法狗都在使用的 Python 语言. 教育部早在两个月前(自2018年3月起)就以及公布:大学生全国计算机二级考试中必考Pyth ...

  10. Hibernate二级缓存简述及基于Spring4,Hibernate5,Ehcache3的二级缓存配置

    Hibernate L2缓存 缓存的分类 L2缓存工作原理 放入二级缓存的数据 Ehcache 依赖 ehcache.xml 常用的memoryStoreEvictionPolicy(缓存算法) eh ...