有没有什么办法可以;把戏;一个单独的PHP脚本会让人认为系统时钟/日期与实际情况不同吗?
我需要调试各种与时间相关的问题。每六个月只有一个bug发生一个小时。要等半年才有一个小时的时间来修复这个bug是很乏味的。由于这个原因,以及类似的测试情况,我想为单个PHP脚本“伪造系统时钟/日期” 它不能改变实际的系统时钟/日期!实际上,改变这一点对于我保存的所有类型的日志来说都是灾难性的,无论它们多么短暂 我希望能够做到以下几点:有没有什么办法可以;把戏;一个单独的PHP脚本会让人认为系统时钟/日期与实际情况不同吗?,php,date,datetime,time,clock,Php,Date,Datetime,Time,Clock,我需要调试各种与时间相关的问题。每六个月只有一个bug发生一个小时。要等半年才有一个小时的时间来修复这个bug是很乏味的。由于这个原因,以及类似的测试情况,我想为单个PHP脚本“伪造系统时钟/日期” 它不能改变实际的系统时钟/日期!实际上,改变这一点对于我保存的所有类型的日志来说都是灾难性的,无论它们多么短暂 我希望能够做到以下几点: set_fake_time_for_this_script('1995-05-04 04:24:15'); sleep(3); var_dump(time());
set_fake_time_for_this_script('1995-05-04 04:24:15');
sleep(3);
var_dump(time()); // Will not return the timestamp for my computer's system clock, but instead "1995-05-04 04:24:18".
// Any other time-related functions will also use that fake time/date as the "present time".
这可能吗?如果是,怎么做?请告诉我这是…这是不可能的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
函数并调用系统命令来执行此操作。但是请注意,随机更改整个系统的时间会产生意外的结果。但我很少使用time()。。。因此,我必须弄清楚如何(如果可能的话)在发送时间的任何地方发送“自定义时间”。每个与时间相关的函数之间都会有变化,如果它有一个函数的话……你在这一次执行任何计算吗?