我有一个通过cron调用的PHP控制台脚本,它本身创建了一个目录的tar文件.
通过cron调用PHP脚本时,无法正确创建tar文件.查看tar文件时会出现以下错误:
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
通过控制台手动调用PHP脚本时,正确创建了tar文件.cron日志输出显示没有错误.
这里tar调用形成PHP脚本.
exec("cd $this->backupTempFolderName/$id; tar -czf ../../$this->backupFolderName/$tarFileName $dbDumpFileName documents");
Run Code Online (Sandbox Code Playgroud)
剂量任何人都知道为什么在手动调用时正确创建tar并在通过cron调用时失败?
更新:通过cron创建tar文件时给出的错误是:
tar: ../../backup/20150819-060003.tar.gz: Wrote only 4096 of 10240 bytes
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
有时错误是:
tar: ../../backup/20150819-054002.tar.gz: Cannot write: Broken pipe
tar: Error is not recoverable: exiting now
Run Code Online (Sandbox Code Playgroud)
如前所述,当通过cron执行时,tar文件被创建,但总是50%的正确大小(当手动执行脚本时):
-rw-r--r-- 1 gtz gtz 1596099468 Aug 19 06:25 20150819-042330.tar.gz <- Manually called skript, working tar
-rw-r--r-- 1 gtz gtz 858570752 Aug 19 07:21 20150819-052002.tar.gz <- Script called via cron, broken tar
Run Code Online (Sandbox Code Playgroud)
更新2
在根据此处给出的输入做了一些进一步的研究之后,可能应该补充一点,称为脚本的cron正在虚拟专用服务器上运行 - 我怀疑对于没有托管者记录的cron作业可能存在一些限制(仅限于最小值)重复时间在文档中给出.
我猜你有资源限制 正如 M. Ivanov 所说,在你的 PHP 脚本中添加以下命令:
shell_exec("php -info");
Run Code Online (Sandbox Code Playgroud)
并在从命令行和 cron 作业执行脚本时检查此参数
memory_limit => ???
Run Code Online (Sandbox Code Playgroud)
您还可以尝试将内存限制提高到1600M来运行 cron
php -d memory_limit=1600M scriptCompressor.php
Run Code Online (Sandbox Code Playgroud)
希望有帮助:)
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |