我们的场景是一台本地 Linux MySQL 服务器,我们可以在该服务器上做任何我们想做的事情,包括安装东西和设置 cronjobs,以及一台只能通过 PHP 访问的远程服务器。远程服务器是常见的 LAMP 托管服务,因此我们可以上传任何我们想要的 PHP,但只有本地主机的 php 脚本本身才能连接到 MySQL,我们不能直接从外部连接到数据库。有 FTP 可以上传和管理 PHP 文件。
本地服务器运行一些商业软件,我们编写了脚本来从该软件获取一些数据。我们需要将这些数据加载到 MySQL 托管在其他地方的网站上的一些专用表中。
为了测试目的,我们导出了本地数据库(使用本地 phpMyAdmin),并将其导入到远程系统(使用远程 phpMyAdmin),当然一切正常。现在我们需要实现自动化。
我们的“同步”实际上是彻底清除远程端,然后从本地数据库重新导入所有内容。这每晚都会发生。
第一个想法是本地 cron 作业,通过 mysqldump 导出,通过 FTP 上传,wget 是一个远程 php 文件 URL,(经过一些凭据检查后)最终运行上传的 SQL。有点盲目、愚蠢的脚本……只要我将陌生人置于 SQL 上传/SQL 导入区域之外,它应该可以很好地工作。
除了重新发明轮子之外,是否有某种东西可以达到同样的结果,也许以我没有想到的更智能的方式?
谢谢。
答案1
除了跳过 ftp 部分,我想不出更好的方法。相反,只需直接使用POST
wget(尽管我会检查如果 POST 失败会发生什么,即数据对于 PHP 最小上传大小而言太大)。这将跳过脚本中的一些复杂性,因为您只需执行 mysqldump,然后执行 wget auth,然后执行 POST(除非我错过了什么)。
但是,更重要的问题是,您为什么要使用仅允许 PHP 访问的主机?您已经有一个在本地运行的开发系统,因此您知道如何处理管理方面的问题。您确实应该尽可能地保持生产和开发环境的接近,以避免因对不同系统进行故障排除而产生的烦人问题(更不用说避免这种特殊的管理麻烦)。
我的 VDS 提供商提供 48 英镑的托管套餐年它提供 1GB 的空间、100GB 的流量和一个数据库(这是公司提供的。增值税所以如果你能索回的话,可以再多打点折扣)。而且你可以获得完整的 shell 访问权限。我相信还有很多这样的托管服务提供商,所以为什么要阻碍未来的发展呢?这只会让你在日后的日子里吃亏。