【问题标题】:send a desktop notification to user, when any new data save or update: php, Drupal7当任何新数据保存或更新时向用户发送桌面通知:php、Drupal7
【发布时间】:2018-10-18 10:01:41
【问题描述】:

如果数据库表在没有任何事件(如页面重新加载或按钮单击)的情况下得到更新,我需要发送实时桌面通知。我正在寻找一些关于 php、Drupal 7 的帮助,

我已经编写了一个脚本来执行此操作,但它需要一些事件来触发桌面通知。而我需要一些不需要事件的东西。

任何意见都会有所帮助

【问题讨论】:

  • @BilalAhmed 我不是在这里询问任何工具。我已经实现了这个,但它需要一些事件,所以寻求一些帮助,这样我们就可以在没有任何事件的情况下完成它。希望它对你有意义。
  • @BilalAhmed 感谢您分享给我的链接,但在我正在寻找 Drupal 7 的内容时,您似乎给了我有关 Drupal 8 的提示。希望这对您有意义。

标签: php mysql drupal-7


【解决方案1】:

据我所知,没有实现这样的功能。尝试使用 AJAX 调用来做到这一点

  • 创建myModuleAjax.js 文件,在模块中的某处循环使用 AJAX,例如。

    (function ($) {
      Drupal.behaviors.myModuleAjax = {      
    
        interval: null,
    
        attach: function (context, settings) {
          interval = setInterval(function() {
            //Place where your php script will be.
            $.getJSON(Drupal.settings.basePath + "ajax/ajaxEventCheck.php", {
                //Any data you need to pass to php script. For example table name.
                tableToCheck: "my_table"
              })
              .done(function(json) {
                //Success, got some data, notification logic here.
                alert("changes");
              })
              .fail(function(jqxhr, textStatus, error) {
                //Handle communication failing.
              });
          //Check each 5 seconds.
          }, 5000);
        },
    
      }
    
    } (jQuery));
    
  • 将此脚本添加到页面

    drupal_add_js(drupal_get_path('module', 'myModule') . '/js/myModuleAjax.js');

  • 创建ajaxEventCheck.php 脚本,它将检查您的事件(表更新)并以 JSON 格式返回信息,它应该以

    结尾
    //Your output data is in $data
    
    //End of function - send JSON data and exit.
    header('Content-Type: application/json');
    print json_encode($data);
    die();
    

编辑: 假设此脚本在 drupal 之外不要使用drupal_exit(),只需使用打印的 JSON 结束脚本,如果您需要脚本内部的 drupal 功能,这更棘手,请参阅this for started

这些步骤应该允许您模拟加载的页面和后端之间的持续通信。

【讨论】:

  • 没错。当某些事情发生变化时,MySQL 无法将数据推送到应用程序。而且,drupal 也无法将数据推送到 Web 浏览器。您必须以某种方式伪造“实时桌面通知”。
  • 谢谢Jacek的回答,但是会不断打服务器,你觉得是不是好办法。
  • 视情况而定。如果您的脚本简单且经过优化,并且您不会经常调用它,则它不应限制服务器工作(4-5 秒间隔不是“实时”,但应该由服务器轻松处理,即使是其他并行任务)。例如。如果它的简单 SQL 查询应该是绝对没问题的。我能想到的任何其他方法都是 websockets,但我发现的唯一方法是 this drupal 8 beta module,它看起来被遗弃了
  • @JacekRosłan 是的,我打算通过 nodejs 事件和套接字 io 来实现它。感谢您在这里的意见。
猜你喜欢
  • 2021-10-27
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 2014-12-05
  • 2019-02-14
  • 1970-01-01
相关资源
最近更新 更多