2011-12-09 216 views
1

我有一个脚本,我们称之为linkchecker,它通过大约10.000个URL循环,检查它们是否有http状态码。 当它们被选中时,这个url被标记为在我的数据库中被选中。 它不会输出任何东西,直到完成,这可能需要几个小时。如何在后台运行php脚本?

所以我想到只是让另一个脚本能够在后台运行链接检查器,同时不断地在数据库中查询有多少网址被检查,所以我可以跟踪进度,并且如果有任何网址给出长时间的问题连接时间等。

我试着在iframe中运行linkchecker,但是直到linkchecker完成后才会加载任何东西。

当主脚本正常运行,执行其他任务时,如何在后台执行此链接检查器?

+0

叉呢?检查Googleón如何使用它。 – bvd

+0

嗯。在这里,Cronjobs想到了。在iframe中运行脚本时,max_execution_time最终会阻碍你。 –

回答

2

你必须设置一个cron作业(如果你运行的是Linux),其执行卷曲命令来访问PHP脚本(外部,比如“卷曲http://domain.com/php/something.php”),或者只是执行PHP命令指向内部文件。

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

0

在数据库中创建一个名为“Checked”的列。只需在数据库中进行PHP脚本更新即可。使用phpMyAdmin以图形方式查看数据库,只需在列“Checked”后面选择排序,然后您就可以看到它到底有多远。

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

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

希望这会有所帮助! :)

0

我建议做一个AJAX请求到新的页面中,您把它ajaxChecker.php

在的Thuis页它只是看看有没有被选中的网址(回数) 如果未经检查的数量则为零呼应在新的div

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

setInterval("checker()", 10000); 

过程和输出使通过Ajax或cron作业请求启动第一