【问题标题】:Using toastr in a cron job在 cron 作业中使用 toastr
【发布时间】:2015-10-01 10:54:33
【问题描述】:

我正在使用 laravel toastr 功能 (link here)。我只是想问一下是否有可能或者有什么方法可以在 cron 作业中使用 toastr 功能,然后将 toastr 结果扔到网页中?

我也不想使用任何网络套接字。我只是问有没有人有建议。

谢谢

【问题讨论】:

  • 创建一个执行所需 toastr 函数的 php 页面,然后从 cronjob 调用该页面? (我对烤面包一无所知)

标签: php laravel-5.1 toastr


【解决方案1】:

好的,如果我正确理解你想要做的是向用户发送异步消息,一种方法是使用 WebSocket 并添加一个监听该消息的 JavaScript,如果有任何传入数据显示 toastr。问题是你不想要 WebSockets。另一个选项是在用户加载页面后显示 toastr 消息,但这并不完全是您想要的,因为这将需要重新加载页面才能从服务器获取数据,尽管我想这是尽可能接近的。您可以在主模板文件中包含以下代码:

@if (Session::has('flash_notification.message'))

    <script>
        $(document).ready(function() {

        toastr.{{ Session::get('flash_notification.level') }}
        ('{{ Session::get('flash_notification.message') }}');

        });
    </script>

@endif

并且您需要另一个脚本或 Laravel 命令,该脚本或 Laravel 命令会定期从 CRONJOB 执行,并且应该写入数据库或文件。写入数据后,您可以在 Contrller 或 Model 中读取它并将其附加到 Session 中,您可以使用时间戳,这样您就不会打印重复的 toastrs。

或者,您可以在页面中添加一个 JavaScript,该 JavaScript 将不时轮询端点,如果有更新,它将显示通知,但这会给您的网络服务器 (Apache) 增加额外的负载。

【讨论】:

  • 非常感谢您的建议,非常感谢。我喜欢 javascript 的想法,但我担心负载。嗯,我想我现在先把它放在一边。再次感谢你..
  • 你用过laravel5.1的事件吗? laravel.com/docs/5.1/events。你觉得我可以用这个吗?但我不想设置广播公司...
  • 事件/侦听器通常会在页面重新加载时被触发,这不是您想要的,如果您阅读事件的文档,您会看到:laravel.com/docs/5.1/events#broadcasting-events 所以又是 WebSockets,那里如果不通过套接字打开与服务器的持久连接或定期轮询服务器以获取更改,则无法更新应用程序。
猜你喜欢
  • 2023-03-14
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
相关资源
最近更新 更多