colopl/colopl_timeshifter

当前时间修改扩展包装库。

1.1.6 2024-09-20 02:50 UTC

This package is auto-updated.

Last update: 2024-09-20 02:50:24 UTC


README

此扩展将 PHP 中的当前时间更改为指定的修改值。

警告

不要在生产环境中使用此扩展!!!

目前,此扩展适用于以下功能

  • 任何处理当前时间的内置 PHP 处理程序(如 ext-date
  • NOW() 以及通过 PDO 在 MySQL 或兼容的 DBMS 中的许多语句
  • 服务器请求时间的环境变量(例如 S_SERVER['REQUEST_TIME']

设置

$ git clone --recursive "https://github.com/colopl/php-colopl_timesifter.git" "colopl_timeshifter"
$ cd "colopl_timeshifter/ext"
$ phpize
$ ./configure --with-php-config="$(which php-config)"
$ make -j$(nproc)
$ TEST_PHP_ARGS="-q --show-diff" make test
$ sudo make install

并启用扩展。

$ sudo echo "extension=colopl_timesfhiter" > "$(php-config --ini-dir)/99-colopl_timeshifter.ini"
$ php -m | grep colopl_timeshifter
colopl_timeshifter

PHP 库(推荐)

$ composer require --dev "colopl/colopl_timeshifter"

并使用 Colopl\ColoplTimeShifter\Manager 类。

INI 指令

colopl_timeshifter.is_hook_pdo_mysql

类型: bool 默认: true 运行时切换: (PHP_INI_SYSTEM)

启用或禁用挂钩到 \PDO::__construct 以交换 MySQL 函数和关键字(例如 NOW()CURRENT_TIMESTAMP)中的当前时间

colopl_timeshifter.is_hook_request_time

类型: bool 默认: true 运行时切换: (PHP_INI_SYSTEM)

选择是否挂钩 $_SERVER 超全局变量 REQUEST_TIMEREQUEST_TIME_FLOAT

colopl_timeshifter.usleep_sec

类型: int (int<1, max>) 默认: 1 运行时切换: (PHP_INI_ALL)

对于表示时间的字符串,设置等待微秒数以检查它是绝对时间还是相对时间。

colopl_timeshifter.is_restore_per_request

类型: bool 默认: false 运行时切换: (PHP_INI_ALL)

设置是否在请求结束时取消挂钩。

函数

提示

安装 colopl/colopl_timeshifter Composer 包,并使用 Colopl\ColoplTimeShifter\Manager 支持类。

\Colopl\ColoplTimeShifter\register_hook(\DateInterval $interval): bool

设置要从中减去当前时间的时差。

如果挂钩成功,则返回 true;否则返回 false

\Colopl\ColoplTimeShifter\unregister_hook(): void

断开挂钩。

\Colopl\ColoplTimeShifter\is_hooked(): bool

检查挂钩是否完成。如果挂钩已完成,则返回 true,否则返回 false

许可

PHP License 3.01