如何在 Azure 上的 PHP webjob 中压缩文件?
How to zip files inside a PHP webjob on Azure?
我正在将 PHP 站点和关联的计划任务移至 Azure。
我可以将大部分 webjobs 转到 运行,但是当它尝试执行命令行 'zip' 命令时特别失败(大概是因为 Azure 没有此实用程序可用):
exec('zip -9 -j '.$tmpdir.'GROUP-'.date('dmY').'-DMS14.zip '.$zip_images);
给出:'zip' 未被识别为内部或外部命令
是否有等效的 module/command 可以在 Azure 上 运行 来压缩文件?
您需要以编程方式执行此操作,而不是尝试启动另一个进程。
PHP 似乎内置了 libraries/functions 来支持你想做的事情。快速搜索发现这个 documentation 解释了如何。
如果您想要 .NET 解决方案,那么您可以使用 ZipFile class.
由于 Azure 网站 运行 在 Windows VM 上托管在 IIS 上,并且“zip”不是 Windows 内置命令,所以我们无法在PHP。
@Rick Rainey 利用 PHP 内置 ZipArchive
class 来获取它的想法是正确的,我们不需要在 Azure 上安装它,我会想补充一些小技巧:
1、当我们添加一个Webjob时,job脚本文件会上传到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();
我正在将 PHP 站点和关联的计划任务移至 Azure。
我可以将大部分 webjobs 转到 运行,但是当它尝试执行命令行 'zip' 命令时特别失败(大概是因为 Azure 没有此实用程序可用):
exec('zip -9 -j '.$tmpdir.'GROUP-'.date('dmY').'-DMS14.zip '.$zip_images);
给出:'zip' 未被识别为内部或外部命令
是否有等效的 module/command 可以在 Azure 上 运行 来压缩文件?
您需要以编程方式执行此操作,而不是尝试启动另一个进程。
PHP 似乎内置了 libraries/functions 来支持你想做的事情。快速搜索发现这个 documentation 解释了如何。
如果您想要 .NET 解决方案,那么您可以使用 ZipFile class.
由于 Azure 网站 运行 在 Windows VM 上托管在 IIS 上,并且“zip”不是 Windows 内置命令,所以我们无法在PHP。
@Rick Rainey 利用 PHP 内置 ZipArchive
class 来获取它的想法是正确的,我们不需要在 Azure 上安装它,我会想补充一些小技巧:
1、当我们添加一个Webjob时,job脚本文件会上传到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();