[英]How to zip files inside a PHP webjob on Azure?
我正在将一个PHP网站和相关的计划任务移至Azure。
我可以运行大多数Web作业,但是当它尝试执行命令行“ zip”命令时(尤其是因为Azure没有此实用程序可用),它尤其会掉线:
exec('zip -9 -j '.$tmpdir.'GROUP-'.date('dmY').'-DMS14.zip '.$zip_images);
提供: 'zip'无法识别为内部或外部命令
是否可以在Azure上运行等效的模块/命令来压缩文件?
由于Azure网站在IIS托管的Windows VM上运行,并且“ zip”不是Windows内置命令,因此我们无法在PHP中执行它。
@Rick Rainey的利用PHP内置ZipArchive
类来实现这一点的想法是正确的,我们不需要将其安装在Azure上,我想补充一些技巧:
1,当我们添加一个Webjob,作业脚本文件将在上传D:\\home\\site\\wwwroot\\App_Data\\jobs
和被separated
成continuous
和触发的子文件夹。
2,由于IIS使用FastCGI
处理这些PHP脚本,因此这里不会定义$_SERVER
变量。 因此,我们可以使用文件的绝对目录代替。
这是我的测试代码片段:
$zip = new ZipArchive();
$filename = "D:/home/site/wwwroot/test112.zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt.\n");
$zip->addFile("D:/home/site/wwwroot/.user.ini");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.