PHP-使用ZipArchive时Time()函数中的错误

djmepvbi  于 2022-10-24  发布在  PHP
关注(0)|答案(1)|浏览(132)

我正在使用ZipArchive的addEmptyDir/addFile方法在循环中将文件添加到ZIP文件,并测量当前时间。目前,代码中的相关部分如下所示:

$zip = new ZipArchive();

if (!$zip->open($inProgressZipName, ZIPARCHIVE::CREATE)) {
    return array(
        "result" => "error"
    );
}

echo "start time=" . time() . "\n";
foreach ($list as $filePath) {
    echo "loop time=" . time() . "\n";
    $file = utf8_decode($filePath);

    $zip->addFile($file, str_replace($path . '/', '', $file));
}
echo "end time=" . time() . "\n";

$zip->close();

我得到了一个非常错误的输出:

start time=1666532175
loop time=1666532175
loop time=1666532175
.
.

loop time=1666532175
loop time=1666532175
end time=1666532175

如果我将代码改为使用EXEC命令,如下所示:

$zip = new ZipArchive();

if (!$zip->open($inProgressZipName, ZIPARCHIVE::CREATE)) {
    return array(
        "result" => "error"
    );
}

echo "start time=" . exec("date +%s") . "\n"; // exec() instead of time()
foreach ($list as $filePath) {
    echo "loop time=" . exec("date +%s") . "\n"; // exec() instead of time()
    $file = utf8_decode($filePath);

    $zip->addFile($file, str_replace($path . '/', '', $file));
}
echo "end time=" . exec("date +%s") . "\n"; // exec() instead of time()

$zip->close();

我得到了如下正确的输入:

1666532505
loop time=1666532505
loop time=1666532505
.
.
loop time=1666532506
loop time=1666532506
.
.
loop time=1666532606
end time=1666532606

正如你可能知道的,我不能使用exec,因为这段代码将存在于WordPress插件中,所以...这是怎么回事?

ut6juiuv

ut6juiuv1#

我以前也遇到过同样的问题。请尝试改用PharData

相关问题