🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
参考:https://learnku.com/docs/laravel/6.x/scheduling/5169#introduction [TOC] ### 一、任务调度不生效 文档中的例子,是先要用crontab定义每分钟执行artisan schedule:run 命令 出现了手动执行成功,但是crontab自动执行不生效的问题,最后解决: 原因是crontab不识别环境变量 也就不识别php命令 把php换成whereis php 返回的全路径就行了 ### 二、配置全在Kernel文件中,不好维护 ``` /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { # 使用份文件的形式配置,避免代码提交冲突。也方便按业务分类或分工管理配置 \App\Task\Amazon\AutoTask::run($schedule); \App\Task\Shopee\AutoTask::run($schedule); } ``` ``` <?php namespace App\Logic\Amazon; use Illuminate\Console\Scheduling\Schedule; use App\Tool\RequestUtil; class AutoTask { public static function run(Schedule $schedule){ # 商品列表,包含了FBM商品库存 $schedule->call(function () { $port = env('AUTO_JOB_PORT'); $requestUtil = new RequestUtil(); $preUrl = 'http://127.0.0.1:'.$port.'/'; $taskUrl = $preUrl . "product/make_down_item_list_task?platform=amazon"; $requestUtil->toSocket($taskUrl); })->everyMinute(); # 订单列表 $schedule->call(function () { $port = env('AUTO_JOB_PORT'); $requestUtil = new RequestUtil(); $preUrl = 'http://127.0.0.1:'.$port.'/'; $taskUrl = $preUrl . "order/make_down_order_list_task?platform=amazon"; $requestUtil->toSocket($taskUrl); })->everyMinute(); ...其他配置 } } ``` ### 三、No scheduled commands are ready to run.