我有一个我的数据库的备份脚本,直到最近才运行良好。 现在我发现压缩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

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

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会中止?

===============>>#1 票数:2

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

你可以暂时绕过这个

ini_set('max_execution_time', 0);

在脚本的顶部。

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

如果您需要执行命令并将命令中的所有数据直接传回而没有任何干扰,请使用passthru()函数。

PHP手册:系统()

  ask by R_User translate from so

未解决问题?本站智能推荐: