2012-01-03 89 views
0

我有一个定制的CMS一组文件,而现在的客户群实际上是越来越大,我需要某种类型的自动更新,将通过每个cron作业做也许是晚上。指引自动化PHP脚本更新

基本上它需要更换所有的文件下/管理(包括.php然后,因为它是指在主域的所有时间.js文件,没有的CSS文件)。

我想知道做到这一点的最好方法是什么 - 我的文件不在任何类型的公共github存储库上,所以我只需手动ZIP和上传,或者只是在服务器上执行它文件管理器来gzip吗?

我只是需要如何去一些这方面的指导方针,以减少安全问题等,这是最好的方法?要下载压缩文件,然后解压缩它?解压缩文件时,会自动覆盖现有文件吗?

我不想使用这个命令行工具,因为一些账目的坐在我的服务器之外,所以我不能真正做任何类型的文件复制通过SSH或诸如此类的事。

谢谢你的帮助。

回答

1

你可以尝试运行一个cron PHP脚本,通过对客户的构建目标目录循环,造成其内容的哈希值,然后把它比作你的主副本:

$files = array(); 
if ($handle = opendir('/path/to/files')) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      $file_hash = md5(file_get_contents('/path/to/files'.$entry)); 
      compare_and_get_contents('/path/to/files'.$entry, $file_hash); 
     } 
    } 
    closedir($handle); 
} 

的compare_and_get_contents( )函数看起来是这样的:

function compare_and_get_contents($file_path,$hash){ 
    $get_code = file_get_content('http://mysite.com/compare?path='.urlencode($file_path).'&hash='.$hash); 
    if (strlen($get_code)>0){ 
     file_put_contents($file_path,$get_code); 
    } 
} 

你只需要编写一个页面(http://mysite.com/compare)相比的客户端版本的散列的父版本的散列和打印父版本的代码,如果它们不匹配。如果这是一个问题,您可能还想在数据传输时加密数据。显然,这个代码将需要一些修订工作,并有几个潜在的安全和权限问题,但它可以完成这项工作,这将是比周围路过整个事情作为一个zip文件带宽不够密集。

+0

我最终做了这样的事情 - 从母服务器获取文件,然后放入zip文件,然后解压缩! – jeffkee 2012-03-26 19:26:03

1

使用VCS喜欢的git你可以创建一个cron,每天晚上将调用CVS像

git pull 

它不是必需的,该库是公共的,但服务器需要访问。

+0

伟大的想法 - 但给服务器访问,我需要一个更大的GIT帐户。我希望使用PHP文件下载器的更简单的解决方案,类似于Wordpress的做法。 – jeffkee 2012-01-03 20:49:18

+0

@jeffkee只需在您自己的服务器上托管git存储库? – 2012-01-03 20:58:19

+0

不知道,你的意思是“GIT帐号”。您只需要一个带有可选大小的硬盘和已安装的SSH服务器的系统。这就是所有的git需求。 – KingCrunch 2012-01-03 21:02:05