问题描述
我需要调试各种与时间有关的问题。每六个月只有一个小时发生一次错误。等待半年等待一个小时的时间来修复此错误是很乏味的。由于这个原因以及类似的测试情况,我想为单个PHP脚本“伪造系统时钟/日期”。
它一定不能更改实际的系统时钟/日期!实际上更改此设置对于我保存的所有日志来说都是灾难性的,无论多么短暂。
我希望能够做类似的事情:
Microsoft Graph
这可能吗?如果是这样,怎么办?请告诉我这是...
解决方法
这不可能是PHP实现时间功能的方式。
PHP从托管服务器读取时间(在您的情况下,可以是您的PC),因此您不能像这样更改时间。
但是,有一种聪明的方法可以满足您的需求。由于时间只是其核心的时间戳,所以它是一个数字,因此请找出当前时间与您要在函数中设置的时间之间的时间戳差异(正或负)。您会得到补偿。
然后执行您想随时间进行的所有计算,并向其添加偏移量。这样,您将获得时间的所有功能,而无需再次实现整个时间功能。
function mytime() {
return time()+set_mytime();
}
function set_mytime($new_time=null) {
static $offset;
if(!$new_time) {return $offset;}
//$new_time should be a unix timestamp as generated by time(),mktime() or strtotime(),etc
$real_time=time();
$offset=$real_time-$new_time;
}
此外,如果您对更改时间非常感兴趣,则可以使用exec
函数并调用系统命令来执行此操作。但是请注意,随机更改整个系统的时间会产生意想不到的结果。