-1

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

我想执行一个 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 作业是我确信可以做到这一点的唯一方法。

4

2 回答 2

0

您可以通过异常处理将文件检查包含在 php 脚本中,这需要一点 php 方面的开销。

于 2013-10-08T19:43:22.580 回答
0

我可以设想你这样做的几种方法。如果可能的话,第一个是最简单的,它是在 PHP 脚本本身中添加检查以查看文件是否存在。如果您的产品导入需要超过一分钟的时间,您还必须考虑如果文件仍然存在而另一个导入已经发生会发生什么。

第二种方法是创建某种 bash 或 shell 脚本来检查文件是否存在,如果存在则运行命令以执行 PHP 脚本,然后将 shell 脚本添加到您的 cron 而不是 PHP 脚本本身。

于 2013-10-08T19:45:18.200 回答