在Linux中创建基于文件的Cron作业

时间:2013-10-08 19:37:47

标签: php linux csv cron

我正在尝试做我认为非常复杂的任务。

我想执行PHP脚本,但只有在/ var / import中存在名为import_products.csv的文件时才会执行。原因是因为该脚本试图导入上述CSV文件,因此如果它每分钟都尝试运行该脚本,我不希望它出错。

另一方面,如果有文件,我希望脚本每分钟运行一次(甚至每分钟2或4次)。所以我所涉及的是这样的。

我创建了每分钟运行的cron作业,执行以下操作:

  • 检查/var/import/import_products.csv是否存在

如果它不存在,请立即退出脚本。

  • 执行product_import.php(这将存储在与我的cronjob文件相同的文件夹中)
  • 执行完成后,删除/var/import/import_products.csv

我将使用一个单独的守护进程来生成这些CSV文件,所有这一点必不可少的是,如果文件存在,它只运行PHP脚本。

如果有一种方法可以在不使用cron的情况下执行此操作,那也可以。基本上我只是希望它在每次写入新的import_products.csv时运行该PHP脚本,然后删除该文件。 Cron工作是我确定知道的唯一方法。

2 个答案:

答案 0 :(得分:0)

你可以通过异常处理在php脚本中包含文件检查,只需要一点php开销。

答案 1 :(得分:0)

有几种方法我可以设想你这样做。第一种是,如果可能的话,最简单的方法是add in checks to the PHP script itself来查看文件是否存在。如果您的产品导入时间超过一分钟,您还必须考虑如果文件仍然存在会发生什么,而另一个导入已经发生。

第二种方法是创建一个将check for the existence of the file的某种bash或shell脚本然后运行命令来执行PHP脚本(如果是这样),然后将shell脚本添加到你的cron而不是PHP脚本本身。