1.thinkphp5配置自定义命令行
/application/console/command
namespace appconsolecommand; use thinkconsoleCommand; use thinkconsoleInput; use thinkconsoleinputArgument; use thinkconsoleinputOption; use thinkconsoleOutput; use appautotask ask; class Test extends Command{ /** * 定义命令 * 命令名称是 test */ protected function configure() { $this->setName('test')->setDescription('Here is the market test task '); } /** * 命令执行的内容 * @param Input $input * @param Output $output */ protected function execute(Input $input, Output $output) { $output->writeln("StartCommand Test:"); $object = new appautotask askTest(); $object->run(); $output->writeln("End Test.."); } }
2.python安装APScheduler是Python的一个定时任务框架,可以很方便的满足用户定时执行或者周期执行任务的需求,它提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。并且该框架不仅可以添加、删除定时任务,还可以将任务存储到数据库中,实现任务的持久化,所以使用起来非常方便。
更多了解 https://pypi.org/project/APScheduler/
pip install apscheduler
#!/user/bin/env python # # -*- coding: UTF-8 -*- import time from apscheduler.schedulers.blocking import BlockingScheduler import logging import os logger = logging.getLogger() logger.setLevel(logging.DEBUG) fileHandler = logging.FileHandler('./log/task.log', mode='w', encoding='UTF-8') fileHandler.setLevel(logging.NOTSET) formatter = logging.Formatter('%(asctime)s - %(message)s') fileHandler.setFormatter(formatter) logger.addHandler(fileHandler) def task(): output = os.popen('php think test') logger.info(output) print output.read() if __name__ == '__main__': scheduler = BlockingScheduler() scheduler.add_job(task, 'cron', hour='9-22', second = '*/1') #scheduler.add_job(task, 'cron', hour='9-22', second = '*/1') scheduler.add_job(task, 'cron', hour='9-22', second = '*/1') scheduler.add_job(task, 'cron', hour = 22,minute = 1) scheduler.add_job(task, 'interval', minutes=1) print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C')) try: scheduler.start() except (KeyboardInterrupt, SystemExit): pass