首页 > 解决方案 > 当任何新数据保存或更新时向用户发送桌面通知:php、Drupal7

问题描述

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

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

任何输入都会有所帮助

标签: phpmysqldrupal-7

解决方案


据我所知,没有实现这样的功能。尝试使用 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功能,这更棘手,请参阅此开始

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


推荐阅读