我正在尝试在Laravel中进行实时通知,我决定使用pusher用于此目的(使用Pusher PHP Server)和Laravel事件。我想知道如何每秒检查数据库(例如,检查项目与库存数量较少)并通过Javascript告知用户前端用户。
与此同时,我有一个事件和一个监听器,它将数据推送到通知表和一个用于推送实例化和通道绑定的Javascript:
var pusher = new Pusher("{{ env('PUSHER_APP_KEY') }}",
{
cluster: 'ap1',
encrypted: true
});
(function( $, pusher ) {
var suppliesActionChannel = pusher.subscribe('is-critical');
suppliesActionChannel.bind("client-supply-is-critical", function(data) {
alert(data);
});
})( jQuery, pusher);
我还制作了一个触发事件的控制器:
class SupplyNotificationController extends Controller
{
/**
* Trigger event when the supplies are in critical point.
*
* @return none
*/
public function criticalNotify()
{
$supply = Supply::select('ItemName', DB::raw('COALESCE(SUM(ReceiptQty), 0) - COALESCE(SUM(IssuedQty), 0) AS BalanceQty'))->join('supply_stockcard_t', 'supply_stockcard_t.SupplyNo', '=', 'supply_t.SupplyNo')->having(DB::raw('BalanceQty'), '<=', 'ReOrderPoint')->groupBy('StockNo')->get();
event(new SupplyInCriticalLevel('supply' => $supply));
return response()->json('Success');
}
}
我正在考虑每秒通过AJAX调用这个控制器方法,但我不确定这是否是执行任务的最佳方式。我应该继续使用这个解决方案,还是Laravel提供了更好的选择?