使用 CRON 从源服务器获取 WGET 图像文件,使用基于 PHP-mySQL 的生成列表运行脚本

使用 CRON 从源服务器获取 WGET 图像文件,使用基于 PHP-mySQL 的生成列表运行脚本

我正在尝试设置一个执行以下操作的流程:

  1. 我有一个存储图像文件的文件夹(各种分辨率:l / m / s / xs):工作正常!
  2. 每天,mySQL 表都会使用图像文件名进行更新/完成:工作正常!
  3. 在“内容刷新”表中,我需要找出哪些图像是新的:完成了一半
  4. 在列出新的图像文件后,我需要运行一个脚本(WGET)将源文件从服务器 A 下载到服务器 B 中的特定文件夹:根本不存在

到目前为止,我都是“手工”完成的:

  • 生成一个包含每个图像文件名的 TXT 文件每行(以源路径为前缀):... http://source-server/images/XS/image-filename_X.jpg http://source-server/images/XS/image-filename_Y.jpg http://source-server/images/XS/image-filename_Z.jpg ...

  • 运行以下命令:

wget -i 20210331_1045_items_.txt -P /var/www/目标服务器/htdocs/include/media/photos/items/–限制速率=256k

上述方法有效!但我必须自己做。

有任何想法吗 ?

谢谢大家 !!!

答案1

您可能使用 MySQL 中的某些 SELECT 语句来确定哪些图像是新的。因此,使用该语句中的 INTO OUTFILE 子句将列表导出到文本文件。例如,将其命名为/tmp/output1.txt

设置一个 cron 作业,每 10 分钟左右运行一次并检查文件是否/tmp/output1.txt存在。一旦文件存在,将其重命名为例如/tmp/output2.txt(以避免再次触发作业)并在该文件上运行 wget。

当然,这只是一个基本想法,需要进行一些改进 - 例如,您可能需要检查文件的大小,/tmp/output1.txt以避免在文件仍从 MySQL 导出时脚本拾取它。例如,您可以通过检查文件大小并将其存储在另一个临时文件中来做到这一点。当文件/tmp/output1.txt存在时,将其大小与存储在临时文件中的大小进行比较。如果不同(或者临时文件根本不存在),则将大小存储在临时文件中并退出 - 10 分钟后将再次调用 cron 作业。如果大小相等,则删除临时文件并继续使用 wget。

相关内容