在CRON作业中多次调用PHP(自调用,直到满足退出条件)

在CRON作业中多次调用PHP(自调用,直到满足退出条件),php,process,cron,Php,Process,Cron,我计划使用计划每小时运行的cronjob从2台不同的服务器同步2个文件夹。 要调度的脚本将检查前一个实例是否已在运行,如果未运行,则继续处理 因此,第一阶段是同步这些文件夹。每天(或更经常),第二台服务器将添加1-2千个新文件,这些文件需要移动到第一台服务器上并进行处理 处理将由PHP处理。它将打开每个文件,读取每一行并将其添加到数据库中 我想做的是使用同步文件夹的同一个cron调用PHP脚本来解析文件。但是,由于我不知道处理这么多文件需要多长时间,我想对每个请求上PHP处理的文件数量进行限制

我计划使用计划每小时运行的cronjob从2台不同的服务器同步2个文件夹。 要调度的脚本将检查前一个实例是否已在运行,如果未运行,则继续处理

因此,第一阶段是同步这些文件夹。每天(或更经常),第二台服务器将添加1-2千个新文件,这些文件需要移动到第一台服务器上并进行处理

处理将由PHP处理。它将打开每个文件,读取每一行并将其添加到数据库中

我想做的是使用同步文件夹的同一个cron调用PHP脚本来解析文件。但是,由于我不知道处理这么多文件需要多长时间,我想对每个请求上PHP处理的文件数量进行限制

如果PHP脚本没有增加任何限制(文件数/每个请求),它很容易达到超时

问题是:有没有一种方法可以一直循环并调用这个PHP脚本,直到它完成处理?理想情况下,当wget(文件夹同步)和PHP都完成时,锁将被移除,这样cron的新实例就可以运行了

欢迎任何建议,
谢谢

您可以在脚本末尾放置一个
头()
,并使用GET参数控制执行流。例如:

parse.php?action=1

手稿:


switch ($_GET["action"])
{
case 1:
 //action 1 goes here
 header("Location: ...");
 exit();
break;
case 2:
 //action 2 goes here
 header("Location: ...");
break;
}
 exit();

换句话说,保持重定向(通过头),直到所有文件都被解析。那应该可以了,谢谢!