colopl / colopl_timeshifter
当前时间修改扩展包装库。
1.1.6
2024-09-20 02:50 UTC
Requires
- php: ~8.1.0 || ~8.2.0 || ~8.3.0
- ext-colopl_timeshifter: ^1.0
Requires (Dev)
- phpstan/phpstan: ^1
- phpstan/phpstan-phpunit: ^1
- phpunit/phpunit: ^10
- psalm/plugin-phpunit: ^0.19
- vimeo/psalm: ^5
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_TIME
和 REQUEST_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