如果您出于某种原因需要 realpath() 的恒定时间实现,请尝试
<?php
function realpath_constant_time(string $path, float $target_seconds, bool &$constant_time_success = null){
$start_time=microtime(true);
$ret=realpath($path);
$constant_time_success = @time_sleep_until($start_time+$target_seconds);
return $ret;
}
?>
例如,一个始终使用精确 1 毫秒的实时(对于基于 SSD 的服务器来说应该足够了,也许基于旋转硬盘的服务器可能需要接近 10 毫秒的东西,我不知道)
<?php
realpath_constant_time("/path/to/../to/file.txt",0.001,$constant_time_success);
?>
您可以使用 $constant_time_success 来查看是否需要更多时间(因此无法以恒定时间执行 realpath()),或者您是否成功。