cron作业可以用来显示通知在PHP web


can cron job be used to show notification in php web

我有以下场景。如果任何投诉没有在48小时内完成,如果投诉已经接近48小时而没有完成,那么应该在时间限制之前(比如1小时前)在后台弹出或通知。我正在考虑做cron工作(每小时跑一次)。我的问题是如何在cron工作中做通知。欢迎提出任何建议

cron作业不应该连接到页面;它应该是相反的:使用后端页面本身来检查作业完成情况。您可以为此使用服务器发送事件(SSE)。这个过程是:

1后端页面(Javascript)订阅SSE通道,并在PHP脚本发出事件时显示弹出窗口

var source = new EventSource("job_checker.php");
source.onmessage = function(event) {
    //event contains the job info and deadline. you can display it
    var jobDetails = JSON.parse(event);
    ...
};

2 PHP job_checker.php可以通过一个循环运行一段时间,检查作业是否完成:

<?php
$time_limit = 300; //300 seconds
$time_spent = 0;
while($time_spent < $time_limit){
    sleep(30); //sleep for 30 seconds
    $time_spent += 30;
    //check DB for job completion and deadline.
    //if you find a job, emit an SSE to the browser
    if($event_found){
        header('Content-Type: text/event-stream');
        header('Cache-Control: no-cache'); 
        echo "data: ". json_encode($event_found)."'n'n";
        flush();
    }
}

PHP脚本将继续工作300秒。如果它发现一个事件,它将发出数据,浏览器将获取它。300秒后,脚本将停止运行。如果用户仍然打开管理页面,浏览器将自动重新连接。如果用户关闭了页面,资源将被释放。

来自Mozilla的更多文档:(感谢Alok Patel提供的链接)