前言
需要测试修改时间,如果操作系统环境不允许调整时间,就要想办法调整单个进程的时间
libfaketime如何解决这个问题
libfaketime通过LD_PRELOAD hook glbic获取系统时间的相关接口来mock时间,通过环境变量来控制计算系统时间的算法。
注意:不支持静态链接的程序
安装
从github下载:github.com/wolfcw/libf…
make && make install即可
使用示例
faketime.sh
#! /bin/bash
export LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1
#export FAKETIME="2023-03-29 17:00:00" # 一直保持这个时间点
export FAKETIME="@2023-03-29 17:00:00" # 时间为从这个时间点起
php ./date.php
date.php
<?php
date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s') . "\n";
sleep(1);
echo date('Y-m-d H:i:s') . "\n";
sleep(2);
echo date('Y-m-d H:i:s') . "\n";
执行
root@ubuntu18_04:~# bash faketime.sh
2023-03-29 17:00:00
2023-03-29 17:00:01
2023-03-29 17:00:03