如何在Laravel中每分钟运行计划任务?

时间:2019-06-03 14:40:18

标签: laravel schedule

我如何每分钟运行我的计划任务?当我运行命令const dummyFunction = async (val: string, index: number): Promise<string[]> => { let resu: string[] = []; resu = [...resu, await dummyPromise<string>(`${val} appel 1`, index)]; resu = [...resu, await dummyPromise<string>(`${val} appel 2`, index + 0.5)]; resu = [...resu, await dummyPromise<string>(`${val} appel 3`, index + 1.2)]; resu = [...resu, await dummyPromise<string>(`${val} appel 4`, index + 1.7)]; resu = [...resu, await dummyPromise<string>(`${val} appel 5`, index + 0.7)]; return resu; }; const dummyPromise = async <T>(param: T, index: number): Promise<T> => { return new Promise(resolve => { setTimeout(() => resolve(param), 3 * index * 1000); console.log("dans dummypro", 3 * index * 1000); }); }; 时,控制台会显示“没有计划的命令准备就绪。”。我应该如何正确设置任务?例如,如果我使用单独命令const test = async (array: string[]): Promise<string[]> => { const result: string[] = await executeArrayOfFunctionPromiseByChunk<string>( array, dummyFunction, 2 ); return result; }; test(["a", "b", "c"]).then((result: string[]) => { console.log(result.flat(1)); }); 可以工作,但是在开发应用程序时我想用php artisan schedule:run来完成。

php artisan command:send_info_email_before_event

2 个答案:

答案 0 :(得分:3)

您应该通过 cron作业对其进行设置,使其每分钟运行一次。任务计划不能手动运行。

在终端运行中:

crontab -e

然后添加:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

保存后,它将每分钟运行一次应用程序计划程序(无需运行php artisan schedule:run

See the docs了解更多信息。

答案 1 :(得分:0)

在Windows中,您可以安排任务。

  1. 打开Windows开始菜单,然后键入“ 计划的任务”。这将 打开任务计划程序。之后,点击创建任务(我不会 建议使用基本任务,因为对于cron作业来说这太基本了。
  2. 这将打开一个窗口,可让您在Windows 10中创建新的“ Cron Job”。

    名称:这是您记住该任务功能的简便方法。您可以输入任何内容。

    说明:只是更深入的说明,您可以记住它是什么。

    用户帐户:我建议使用完全特权帐户,以便您的cron作业可以根据需要创建和修改文件。但是我也建议您使用一个专门用于Cron作业的帐户,以便您可以随时撤消权限!

    由于网站的性质,我肯定会选中“在用户登录或不登录时运行”,并保留不存储密码(如果保留此密码,则会抛出XML无效错误未选中,则需要输入密码)

    我还将检查“以最高特权运行”

  3. 然后,单击“ 触发”和“ 添加新

  4. 要运行每天运行一次以上的“ Cron Job”任务,请单击日常任务每天修复,并每分钟重复一次任务。确保单击启用。之后,单击确定,然后单击选项卡“操作”,然后单击“新建”。

  5. 将程序/脚本设置为/path/to/php.exe,并运行/ path / to / artisan计划的参数。如果路径中有空格,请确保使用“”。我建议根据经验使用它们。

请记住,不要使用生产电子邮件凭据,您可以使用https://mailtrap.io之类的方法来“捕获”所有已发送的电子邮件。