Amazon S3备份

时间:2011-01-07 14:18:55

标签: php scripting cron

在php中,在完成exmaple之后运行脚本的最佳方法是,我有这两个文件。

我的备份文件。

<?php
require 'back-up.php'; 

#!/bin/php -d max_execution_time = 3600 

$backup_dirs = array('../bu/'); 
$backup = new backupclass($backup_dirs); 
$backup->backup('filesys','files/');
?>

我有我的亚马逊s3上传文件。

<?php

require_once('S3.php');

$s3 = new S3('S3KEY', 'S3SECRETKEY');

$baseurl = "/home/mlcreative/public_html/bu/files";

if ($handle = opendir('./files/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {

            if ($s3->putObjectFile("files/$file", "testingmlc333", "lighthouse/$file", S3::ACL_PUBLIC_READ)) {

                    echo "<strong>We successfully uploaded your file.</strong>";
                    if (file_exists($baseurl . '/' . $file)) { unlink ($baseurl . '/' . $file); }
}else{
                    echo "<strong>Something went wrong while uploading your file... sorry.</strong>";
}

        }
    }
    closedir($handle);
}

?>

好的,所以目前我有一个cron作业设置运行备份php文件,然后一小时后运行亚马逊上传php文件。

我要问的是我如何将这些结合到脚本中,所以我只需要运行一个cron作业而不是两个?

请帮助

2 个答案:

答案 0 :(得分:1)

您可以让备份(#1)脚本在完成后通过URL调用上传(#2)脚本。

# Script Number 1 - Backup
/* After all the content */
@file_get_contents( 'http://www.yourserver.com/uploadToS3.php?protector=somethingSecret' );

# Script Number 2 - Uploader (available at the URL above)
/* Before all the content */
if( $_GET['protector']!='somethingSecret' ){
  die( 'Access Blocked' );
}

这意味着,当备份脚本完成时,它会触发上载脚本。 protector=somethingSecret只是为了防止它被意外触发。

答案 1 :(得分:0)

修改cron作业以在第一个脚本之后运行第二个脚本。就像在cronjob的命令字段中看起来像这样:

php -f firstscript.php ; php -f secondscript.php

我在许多cronjobs上使用这种方法。