V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
KasonPasser
V2EX  ›  PHP

一个关于 PHP 奇怪的 Bug

  •  
  •   KasonPasser · 2017-12-04 16:03:44 +08:00 · 2881 次点击
    这是一个创建于 2579 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个应用的开始时间减去应用结束时的时间,小数点有时居然变成了逗号。

    部分代码:

    	$mtime =  explode(' ',  microtime());
    	$app_starttime = $mtime[1] + $mtime[0];
        ///  程序主体的运行
        $mtime =  explode(' ',  microtime());
        $app_endtime = $mtime[1] + $mtime[0];
    
        $use_time = $app_endtime-$app_starttime;
        fb($use_time, 'exec time');
    
        if($use_time > 5){
            Yf_Log::log($use_time, Yf_Log::ERROR,'slow_slow_log');
        }
        else if($use_time > 1){
             Yf_Log::log($use_time, Yf_Log::ERROR,'slow_log');
        }
        else {
            Yf_Log::log($use_time, Yf_Log::ERROR,'access_log');
        }
    
    

    记录的日志:

    
     	Dec 04 13:21:47 FILE=/data/www/www.xxx.com/index.php [error] 0.03904914855957
    	{"ctl":"Index","met":"index","typ":"e"}
    	#0 /data/www/www.xxx.com/index.php(211): Yf_Log::log(0.03904914855957,ERROR,access_log)
    
    	Dec 04 13:21:48 FILE=/data/www/www.xxx.com/index.php [error] 0.11846590042114
    	{"firstRow":"12","totalRows":"123","ctl":"Goods_Goods","met":"goodslist","act":"all","cat_id":"268","actorder":"desc","typ":"e","keywords":""}
    	#0 /data/www/www.xxx.com/index.php(211): Yf_Log::log(0.11846590042114,ERROR,access_log)
    
    	dic 03 23:25:05 FILE=/data/www/www.xxx.com/index.php [error] 0,018435955047607
    	{"typ":"json","lang":"es_CR","ctl":"Buyer_Voucher","met":"getVoucherCount","__random":"0.6502593521184687"}
    	#0 /data/www/www.xxx.com/index.php(211): Yf_Log::log(0,018435955047607,ERROR,access_log)
    
    	dic 03 23:25:05 FILE=/data/www/www.xxx.com/index.php [error] 0,035964965820312
    	{"typ":"json","lang":"es_CR","ctl":"Buyer_Index","met":"getAllCount","__random":"0.6859251245657769"}
    
    8 条回复    2017-12-05 22:16:47 +08:00
    enenaaa
        1
    enenaaa  
       2017-12-04 16:17:24 +08:00
    microtime(true)
    或者
    $app_endtime = (float)$mtime[1] + (float)$mtime[0];

    看看。两个字符串相加可能出幺蛾子。
    picone
        2
    picone  
       2017-12-04 16:31:49 +08:00
    能看看格式化输出的地方?
    很是诡异,正常的日志日期是 Dec 04xxxx
    而不正常的日志日期是 dic 03xxxx
    有可能是分支结构后面格式化输出的地方打错了?
    KasonPasser
        3
    KasonPasser  
    OP
       2017-12-04 16:41:30 +08:00
    @enenaaa 添加了还是一样的。

    @picone 这个我也注意到了,dic 是西班牙 语的十二月。但是同一个的程序的逻辑也会出现这种结果。
    zgx030030
        4
    zgx030030  
       2017-12-04 16:50:13 +08:00
    搜索后得知西班牙语小数点为逗号,是不是你网站切多语言? 查查 setLocale 的使用?
    vex2
        5
    vex2  
       2017-12-04 16:54:02 +08:00
    确定一下是否有 runtime 的 ini 设置。 还有比如 php-fpm 启动的 worker 使用的配置是不是不一样的。
    huijiewei
        6
    huijiewei  
       2017-12-04 17:10:03 +08:00
    "lang":"es_CR"

    只要是逗号的里面的输出都有
    KasonPasser
        7
    KasonPasser  
    OP
       2017-12-04 17:38:44 +08:00
    @zgx030030
    @huijiewei 系统是有设置了多语言,但本地测试写死语言(西班牙语)也是正常的。
    mingyun
        8
    mingyun  
       2017-12-05 22:16:47 +08:00
    怪异,楼主找到问题了吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5592 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:34 · PVG 14:34 · LAX 22:34 · JFK 01:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.