我的托管服务器上有一个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 >:)');
}
答案 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中是相当标准的。