2010-08-16 177 views
1

我想通过PHP设置一个自动备份,使用http/s我可以将zip文件请求“POST”到另一个服务器,发送一个大的.zip文件,基本上,我想备份整个站点(及其数据库),并通过http/s通过cron peridocally传输文件。 somethiling像大型文件传输的最佳方法通过使用PHP(POST)通过http调用文件传输

wget http://www.thissite.com/cron_backup.php?dest=www.othersite.com&file=backup.zip 

适当的身份验证安全性,可以添加后记....

我喜欢HTTP/S,因为这等网站已经限制使用FTP,是在Windows中。所以我认为通过http/s与其进行通信的方式是肯定的。另一端会有一个对应的php脚本来存储文件。

这个过程中需要完全编程(即闪存上传者将无法正常工作,因为这需要一个浏览器来工作,这个脚本会在shell会话中运行)//

是否有任何广义PHP库或有助于这种事情的功能?我知道PHP脚本超时问题,但我通常可以修改php.ini以最大限度地减少此问题。

回答

0

我个人不会使用wget,只是直接从shell运行。

你的PHP脚本会从cron这样调用: 在/ usr/local/bin目录/ PHP /your/script/location.php ARGS这里,如果你想

这样,您就不必担心关于另一个处理事情的程序(wget),如果您的设置在每次运行时都是相同的,那么只需将它们放入配置文件或直接放入PHP脚本。

超时可以由此处理,使PHP脚本运行无限的时间。

set_time_limit(0); 

不知道你正在使用什么库,但看看CRUL做POST,应该可以正常工作。

我认为将会出现的最大问题将会更加严重相关,并减少与PHP /脚本相关的问题,即确保您获得了带宽,并且您的PHP脚本可以连接到外部服务器。

0

如果它尽可能远离通过HTTP进行大量传输。 FTP也远非理想 - 但出于非常不同的原因。

是的,可以通过ftp,http和https使用curl来实现 - 但这并不能真正解决任何问题。 HTTP是在相对较短的时间内发送相对较小的文件进行优化的 - 当你偏离目标时,最终会破坏很多适用于web服务器的优化(例如,如果你有一个maxrequestsperchild设置,你可能会被人为地延长应该停止的进程的生命周期,LimitRequest *设置和max_file_size之间的交互,更不用说各种超时以及其他限制在Apache中的设置)。

一个更合理的解决方案是使用rsync通过ssh进行内容/代码备份以及适用于您正在使用的DBMS的相应数据库复制方法 - 例如, mysql复制。

+0

我很怀疑,虽然我同意,但当你有控制环境的两端时避免大文件传输http的问题。由于Windows盒子接收文件,因此在ssh上使用rsync不适用。配置方面,我对内部Windows公司服务器的控制有限,但仍然需要在那里获得一个大型的30MB文件..它的IIS接口限制的作用可能会发挥作用,但我也看到这在其他网站上完成,并在它的快速连接通常不会太糟糕。 – user299319 2010-08-16 16:12:36