2016-11-22 32 views
1

我想创建一个聚合器,其目标是抓住facebook的帖子(文本,图片,视频)。下一步是在我的资源上发布获取的信息,并在我的YouTube频道上发布视频。我想让cron每1分钟启动一次这个聚合器。但我认为,我会遇到下一个问题:如果我抓住了这么大的视频文件,它可能无法完成上传到youtube,直到1分钟。直到这一刻才会发生,那么下一个视频文件将被抓取并且它也需要被上传。我的问题是:这第二个视频文件将保持队列并等待第一个上传,或者我需要为此创建一个多线程?如果是这样,请告诉我如何?Apache cron:执行同步任务

回答

1

Crontab只是在预定的时间产生一个进程。如果cron仍在运行一分钟前启动的进程,它将创建另一个进程(即2将同时运行)。

您的代码必须确保正在上传的文件被标记为,如果/当cron运行第二个进程时,它不会尝试多次上传相同的文件。

你的逻辑是这样的:

  • 抓取数据
  • 在你上传数据,检查(在数据库中,例如)如果你已经上传
  • 如果你是尚未上传,标注在数据库中,你所上传的数据
  • 上传数据

要珩磨机吨,这不是一个很好的使用克朗,你会做一个长期运行的过程更好。像supervisord这样的软件可以让你创建一个长时间运行的PHP脚本,如果它崩溃,它会自动重启。

+0

谢谢你的回答。但是,你是什么意思:“......正在上传被标记为......”?我的英语不是很好。 – yura

+0

我已经澄清了一点答案 –