Windows 开发环境下,使用 node-schedule 管理 Laravel 的任务调度

在 Laravel 中创建计划任务非常容易。 它们也很容易在具有 cron 任务的Linux 或 MacOS 中运行。 但是,最近我在 Windows 上进行了很多开发,并且 Windows 没有 具有 UNIX 风格的 cron 任务。而且,Laravel的文档中没有提及如何在Windows中正确执行此操作。。 我发现这篇有用的文章介绍了如何使用 Task Scheduler 在 Windows 中执行此操作,但是感觉太麻烦了。研究晦涩难懂的 Windows 设置上并不是一个好办法,因为这应该是项目级别而不是系统级别的问题。

因此,我找到了一个简单的解决方法,不仅可以避免使用 Windows Task Scheduler,而且可以避免在 macOS 和 Linux 中使用 crontab! 如果明天要更换开发计算机,或将其他人带入我的项目,那么我将拥有完全跨平台的方法来处理计划的作业,而无需深入研究操作系统: NodeJS 库。

使用 node-schedule

因此,我不确定这是否会使我成为一个不专业的 Laravel 开发人员,因为我没有将该工具构建为 Artisan 命令(甚至不是在PHP中),但是它是目前可用的最有效,最可靠的解决方案,无需进行大量额外的工作。 由于大多数Laravel 开发人员都在使用某种前端工具(例如[Laravel Mix或Webpack),因此我们已经有了Node(也许还有Yarn) 安装在我们的开发机器上,减轻了负担。

t添加 node-schedule 到项目

确保您已经进入 Laravel 项目根目录并根据您要执行的操作运行以下 NPM 或Yarn 命令。

# NPM
npm install node-schedule --save-dev

# Yarn
yarn add --dev node-schedule

创建 JavaScript 文件用于编写计划任务

然后在项目根目录中创建一个 dev-scheduler.js 文件,将一下内容添加进去:

const schedule = require('node-schedule')
const { exec } = require("child_process")

new schedule.scheduleJob('* * * * *', function() {
    exec('php artisan schedule:run', function(error, stdout, stderr) {
        if (error) console.log(error)
        if (stderr) console.log(stderr)
        console.log(stdout)
    })
})

运行计划任务

使用 node 运行该文件

node dev-scheduler.js

然后...就是这样。 请记住,这不是用于生产。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://dev.to/jcs224/laravel-task-sched...

译文地址:https://learnku.com/laravel/t/45978

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!