如何在后台运行php脚本?

如何在后台运行php脚本?,php,concurrency,Php,Concurrency,我有一个脚本,我们称之为linkchecker,它在大约10000个URL中循环,检查它们的http状态码。 选中它们时,url在my DB中标记为已选中。 它在完成之前不会输出任何东西,这可能需要很多小时 因此,我考虑使用另一个脚本,在后台运行linkchecker,同时不断轮询数据库中检查了多少URL,以便跟踪进度,以及是否有URL出现连接时间过长等问题 我尝试在iframe中运行linkchecker,但是在linkchecker完成之前不会加载任何内容 当主脚本正常运行时,如何在后台执行

我有一个脚本,我们称之为linkchecker,它在大约10000个URL中循环,检查它们的http状态码。 选中它们时,url在my DB中标记为已选中。 它在完成之前不会输出任何东西,这可能需要很多小时

因此,我考虑使用另一个脚本,在后台运行linkchecker,同时不断轮询数据库中检查了多少URL,以便跟踪进度,以及是否有URL出现连接时间过长等问题

我尝试在iframe中运行linkchecker,但是在linkchecker完成之前不会加载任何内容


当主脚本正常运行时,如何在后台执行此linkchecker,执行其他任务?

您必须设置一个cron作业(如果您运行的是Linux),该作业执行curl命令以访问PHP脚本(外部,如“curl”)或仅执行指向内部文件的PHP命令


您可以创建一个每分钟执行一次的调度程序(这是cron作业支持的最短执行时间),并执行您的工作的“块”。当然,您必须将PHP设置为跳过默认情况下使用的30秒执行限制。

在DB中创建一个您称为“Checked”的列。只需更新数据库中检查的PHP脚本。使用phpMyAdmin以图形方式查看数据库,只需选择在列“Checked”之后进行排序,然后就可以看到它已经走了多远

你必须这样做,因为在脚本完成之前网页不会更新。但是,您可以让脚本运行另一个脚本,说明进程有多远,但这可能太耗时了

您还必须进入php.ini以检查max_execution_time是否设置为几个小时。60*60*24=1天=86 400秒


希望这有帮助!:)

我建议对新页面发出AJAX请求,我们称之为ajaxChecker.php

在thuis页面中,只需查看是否有未检查的URL(返回编号) 如果未检查的数量为零,则在新div中回显输出

function checker()
{
    $.post('ajaxChecker.php',function(data){
    if(data.length > 0)
    $('#result').html(data); 
    });
}

setInterval( "checker()", 10000 );

当然,通过ajax或cron作业请求首先启动它

Fork it?查看Googleón如何使用它。在这里,我突然想到了克朗乔布斯<当在iframe中运行脚本时,code>max\u execution\u time最终会妨碍您。