【问题标题】:Cronjob Homestead not workingCronjob 宅基地不工作
【发布时间】:2015-08-21 13:15:55
【问题描述】:

我创建了一个发送自动电子邮件的命令。当我执行homestead ssh 并运行php artisan emails.send 时,一封电子邮件会到达我的mailtrap.io 帐户。

我已将此代码添加到 kernel.php

$schedule->command('emails:send')->everyFiveMinutes();

我设置了 5 分钟的间隔,只是为了更容易快速测试它。 我已经 ssh'd 进入 Homestead 并执行了

php /home/vagrant/Code/soeptime/artisan schedule:run 1>> /dev/null    2>&1

然后我exit宅基地我做了homestead provision

但是,日志中没有任何内容,我仍然没有收到电子邮件,宅基地现在运行超过 15 分钟。

【问题讨论】:

  • 今天我重新启动了我的家园并运行了 'php artisan sschedule:run' 而不是 cli 执行了这个:'运行预定命令:/usr/bin/php5 artisan emails.send > /dev/null 2> &1 &' 我在邮件陷阱中收到了一封电子邮件。这是什么意思?它不是自动发生的吗?我只能运行一次,如果我在 15 分钟后尝试,它会显示“没有准备好运行的预定命令。”
  • 那么,是时候喝汤了吗? :-)

标签: ssh cron command schedule homestead


【解决方案1】:

需要手动编辑crontab:

第一:

 crontab -e

然后添加

* * * * * php /home/vagrant/Code/soeptime/artisan schedule:run

【讨论】:

  • 在路径开头为“/home/vagrant/”投票,很多文章似乎都缺少这一点
【解决方案2】:

来自Laravel docs:

Laravel 提供了一种通过调度来调度 Cron 作业的便捷方式 每分钟运行一个schedule:run Artisan 命令。这 schedule:run 命令将检查您在 App\Console\Kernel 类来确定应该运行哪些作业。

如果您希望为 Homestead 运行 schedule:run 命令 站点,您可以在定义站点时将schedule选项设置为true:

sites:
   - map: homestead.test
     to: /home/vagrant/code/Laravel/public
     schedule: true 

站点的 Cron 作业将在虚拟机的 /etc/cron.d 文件夹中定义。

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 2016-03-30
    • 2015-10-08
    • 2015-08-25
    • 2016-08-12
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多