【问题标题】:What is the right way to implement scheduled push notifications?实施预定推送通知的正确方法是什么?
【发布时间】:2017-01-19 15:06:23
【问题描述】:

我在 laravel 做项目。我想在不同的时间向不同的用户发送推送通知。就像我可以为每个用户分配不同的跟进时间一样。我搜索并知道我们可以使用 cron 作业的概念,但为此我需要每分钟运行一次 cron 作业,以便我可以检查是否该发送推送通知。 每分钟运行一次cron作业可以吗?因为我认为,它会增加服务器负载。

谁能给我建议,因为我是这个概念的新手,在这种情况下我真的不知道该怎么办。

【问题讨论】:

    标签: php laravel-5 cron


    【解决方案1】:

    Cron 作业是一项计划任务,您可以在任何时间间隔运行。根据您的要求,可以每 1 分钟运行一次。

    在这种情况下,您可以提高 cron 的效率。

    你运行文件 -> 检查你是否有任何通知要发送 -> 如果你继续你的逻辑。

    如果你没有任何东西,你可以exit;

    意思是,只有当你有事情要做(我们应该做的)时,它才会给服务器一些负载。每分钟运行一次 cron 不会给您带来巨大的服务器负载(再次取决于您如何构建代码/数据库查询以优化使用)

    希望这能给你一个先机!

    【讨论】:

      【解决方案2】:

      我们可以在方便的时候在系统中添加 cron。使用以下代码添加代码以在特定时间向特定用户发送通知。

      $loc_cron_min   = 30;
      $loc_cron_hour  = 12;
      $loc_cron_date  = 20;
      $loc_cron_month = 01;
      
      exec('echo -e "`crontab -l`\n'.$loc_cron_min.' '.$loc_cron_hour.' '.$loc_cron_date.' '.$loc_cron_month.' * wget -qO /dev/null http://example.com/cron/sendsnotification.php?userid=1" | crontab -');
      

      我们可以在 php 中使用以下行查看所有计划 cron

      $output = shell_exec('crontab -l');
          echo $output;
      

      根据上述代码通知将在 2017 年 1 月 20 日 12:30 发送。所以你不需要每分钟都执行 cron。执行成功后可以删除cron。

      谢谢

      【讨论】:

      • 感谢您的快速回复,我喜欢这个概念来实现预定通知。我会试试这个,让你知道它是否工作正常。
      • 我有一个疑问...要从数据库中获取记录,我必须每分钟运行一次 cron,因为它们可能会导致用户的跟进时间发生变化。那么这意味着无论如何我每分钟都运行它?
      • 是的。如果跟进时间发生变化,则有另一种选择。删除该用户以前的 cron 并添加新的。但这取决于您的要求。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多