我在服务器上有一个文件,它从页面中提取一些数据,比如爬虫。好的,现在,有时,脚本的执行需要5秒,但有时甚至需要1分钟或2秒。
设置一个用于在2,3或5分钟访问文件的cron作业对我来说不舒服,因为我需要这个爬虫尽可能快地运行。
所以我的问题是:
我可以设置一个cron作业来运行,比方说,每5分钟一次,然后设置php再次重复运行脚本吗?
更清楚:
render :pdf => "#{@employee_full_name}-#{@template_name} Letter",
:template => "/company/employee/download_employee.pdf.erb",
:margin => {
:top => 30,
:bottom => 30
},
:header => {
:html => {
:template => '/company/employee/common_header.pdf.erb',
:locals => {
header: @template_header
}
}
},
:footer => {
:html => {
:template => '/company/employee/common_footer.pdf.erb',
:locals => {
footer: @template_footer
}
}
},
:disposition => "attachment"
的index.php?cron的
*/5 * * * * wget -O - site.com/index.php?cron >/dev/null 2>&1
由于我不太了解cron job如何对我的脚本做出反应,我不知道当另外5分钟cron作业再次访问url时会发生什么。
我将处于无限循环中?
你会怎么做?我需要一些建议。我真的需要设置cron作业运行得更快,在我看来,php中的函数必须永远被调用。
答案 0 :(得分:0)
可能你可以使用crontab更快地运行它,但你可以有一个pid-lock(排序),这样每次调用crontab时,只能运行一个脚本。
答案 1 :(得分:0)
设置cronjob:
* * * * * php /path/to/your/file.php --arg1=value1 --arg2=value2 >> /dev/null 2>&1
你的file.php
<?php
//test your args
var_dump($argv);
$minute = date('i',time());
//run every 10 minutes
if(intval($minute)%10==0){
//run your cron job code here
cron_action();
}
else{
//do other code
}
function cron_action()
{
//do stub
}
这就是如何将cronjob与laravel https://laravel.com/docs/5.3/scheduling一起使用,你将从中学习。