Thinkphp5 command 定时任务
// 定时任务配置
// */1 * * * * cd /data/xxx && /usr/local/php-7.2.2/bin/php think task --action getPayStatus
// */1 * * * * cd /data/xxx && /usr/local/php-7.2.2/bin/php think task --action getRefundStatus
// 如果定时任务日志权限问题,导致报错
// crontab -e -u www
// */1 * * * * cd /data/xxx && flock -xn /tmp/phptask.lock /usr/local/php-7.2.2/bin/php think task
namespace app\api\command;
use think\Config;
use think\console\Command;
use think\console\Input;
use think\console\input\Option;
use think\console\Output;
use think\Db;
use think\Log;
class Task extends Command
{
protected function configure()
{
$this->setName('task')->setDescription('Here is the remark ');
$this->addOption('action', null, Option::VALUE_OPTIONAL, 'specify action.');
// $this->addArgument("arg1", Argument::OPTIONAL, "arg1");
}
protected function execute(Input $input, Output $output)
{
// 这里是核心,命令行模式没有加载这些配置文件,需要主动load
Config::load(ROOT_PATH . 'config/database.php', 'database');
Config::load(ROOT_PATH . 'config/extra/xxxxx.php', 'xxxxx');
$action = $input->getOption('action');
$this->input = $input;
$this->output = $output;
if (!is_null($action) && $action != '') {
$this->$action();
}
}
// php think task --action getPayStatus
protected function getPayStatus()
{
set_time_limit(0);
ini_set('memory_limit', '1024M');
$list = Db::table('xxxx')->select();
foreach ($list as $k => $v) {
echo $k . PHP_EOL;
sleep(1); // 测试时使用, 正式环境建议注释
}
echo 'success' . PHP_EOL;
}
// php think task --action getRefundStatus
protected function getRefundStatus()
{
set_time_limit(0);
ini_set('memory_limit', '1024M');
$list = Db::table('xxxx')->select();
foreach ($list as $k => $v) {
echo $k . PHP_EOL;
// TODO 回写订单退款状态 到业务订单表
sleep(1); // 测试时使用, 正式环境建议注释
}
echo 'success' . PHP_EOL;
}
}
// 如果需要带参数
1.$this->addArgument("arg1", Argument::OPTIONAL, "arg1");
2.php think data --action=downloadSomething 7a29f8933594
3.$actorgid = trim($this->input->getArgument('arg1'));
4.$actorgid = 7a29f8933594