Cron作业无法打开输入文件

时间:2018-08-20 21:55:54

标签: php cron

我的托管服务器上有一个cron job,应该每30分钟执行一次php脚本。此php脚本用于抓取csv文件并将其更新到数据库中(我正在使用MySQL)。手动执行该脚本即可正常工作-大约需要45 seconds才能完成该过程。

现在,当cron job运行时,我收到此消息:

Could not open input file. 

起初,我认为这可能是因为执行该脚本需要30秒钟以上,所以我决定以乞求php脚本的方式设置最大执行时间:

ini_set('max_execution_time', 300);

但是同样的消息再次出现。 这是我的cron job

/usr/local/bin/php /home/emmaein/domain.com/folder/script.php?token=d8cn3j

P.S:token的获取变量有点像密码,因此每个人都无法执行,所以我的php脚本基本上是这样的:

if($_GET['token'] === 'd8cn3j'){
    //open csv
    //get data
    //update db
} else{
    exit('I see you >:)');
}

1 个答案:

答案 0 :(得分:2)

当PHP未在Web服务器上运行时,您将无法访问$_GET变量(没有这种功能)。相反,您应该使用命令行参数:

<?php
if ($argc > 1 && $argv[1] === 'd8cn3j') {
    // Do stuff
}

然后您的crontab变为:

/usr/local/bin/php /home/emmaein/domain.com/folder/script.php d8cn3j

$argc(参数数量)和$argv(参数数组)的概念在CLI程序和is documented on PHP's website中是相当标准的。