gpt4 book ai didi

php - 从 PHP 调用 gzip 失败

转载 作者:搜寻专家 更新时间:2023-10-31 21:07:21 25 4
gpt4 key购买 nike

我的数据库有一个备份脚本,直到最近它还运行良好。现在我发现压缩 MySQLdump(一个 1.3GB 文件)失败了。

<?php
echo "<pre>";
echo "Current time: ".date('Y-m-d _ H-i-s')."\n";

$state = 0;
$result = system('gzip "dumpDB - 2015-05-17 _ 12-01-31.sql"', $state);

echo "Current time: ".date('Y-m-d _ H-i-s')."\n";
echo "Result: ".$result."\n";
echo "State: ".$state."\n";
echo "</pre>";

结果

Current time: 2015-05-17 _ 12-12-40
Current time: 2015-05-17 _ 12-13-40
Result:
State: 9

对我来说这看起来像是超时,因为执行总是需要大约一分钟(但这可能是巧合)。不幸的是,我无法在 $state 中找到值 9 的含义。尝试解压缩时,我收到以下消息:

gzip: dumpDB - 2015-05-17 _ 12-01-31.sql.gz: unexpected end of file

当使用 php -f zip.php 从终端运行 PHP 脚本时,脚本以退出状态 0 结束并且 zip 文件正常:

Current time: 2015-05-17 _ 13-38-22
Current time: 2015-05-17 _ 13-40-11
Result:
State: 0

那么为什么在我的浏览器中运行 PHP 脚本时 gzip 中止?

最佳答案

您的 PHP CLI 设置与网络服务器设置大不相同。在 CLI 模式下,您的脚本最多可以运行 300 秒而不会崩溃。但是,在浏览器中默认超时为 30 秒。

您可以使用

暂时绕过它
ini_set('max_execution_time', 0);

在脚本的顶部。

此外,$state 变量中的值 9 是执行命令返回的最后一行。如果您按照 PHP 手册上的评论使用 passthru,可能会更好。

If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function.

PHP manual: System()

关于php - 从 PHP 调用 gzip 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com