摘要:高性能高精度定時服務,輕松管理千萬級定時任務。支持任務到期觸發和。支持創建延時任務和定時到期任務,和原生保持相同接口,輕松使用。不支持任務輸出任務鉤子及維護模式。是不指定任務名時自動生成,每個任務名必須唯一,相同任務名重復定義將會自動覆蓋。
Forsun高性能高精度定時服務,輕松管理千萬級定時任務。
定時服務項目地址:https://github.com/snower/forsun
laravel插件項目地址: https://github.com/snower/for...
輕松支持千萬級定時任務調度。
定時任務觸發推送到Queue,輕松支持跨機器和共性能分布式。
支持任務到期觸發command、Job、Shell、Http和Event。
支持驅動原生Laravel Schedule運行。
支持創建延時任務和定時到期任務,和原生Laravel Schedule保持相同接口,輕松使用。
背景在實際項目中,存在大量需要定時或是延時觸發的任務,比如電商中,延時需要檢查訂單是否支付成功,是否配送成功,定時給用戶推送提醒等等,常規做法是用 crontab 每分鐘掃碼數據看是否到達時間,繁瑣且擴展性伸縮性較差。
使用 forsun 服務,可以簡單的針對每一個訂單創建一個定時任務,配合異步隊列,可以輕松實現擴展性伸縮性,Apache Thrift 的編程接口也可以很容易的和 celery、laravel 配合。
其他場景下,比如失敗延時重試,使用 forsun 定時服務也可以很簡單就可以實現。
安裝安裝啟動forsun服務,詳情請看 https://segmentfault.com/a/11...。
composer安裝forsun-laravel。
composer require "snower/forsun-laravel"配置
在 config/app.php 注冊 ServiceProvider 和 Facade
"providers" => [ // ... SnowerLaravelForsunServiceProvider::class, ], "aliases" => [ // ... "Forsun" => SnowerLaravelForsunFacade::class, ],
創建配置文件
php artisan vendor:publish --provider="SnowerLaravelForsunServiceProvider"
修改應用根目錄下的 config/forsun.php 中對應的參數即可。
使用 定義調度Artisan 命令調度。
//不指定name是自動生成 Forsun::plan()->command("emails:send --force")->daily(); //指定name Forsun::plan("email")->command(EmailsCommand::class, ["--force"])->daily();
隊列任務調度
Forsun::plan()->job(new Heartbeat)->everyFiveMinutes();
Shell 命令調度
Forsun::plan()->exec("node /home/forge/script.js")->daily();
Event事件調度
Forsun::plan()->fire("testevent", [])->everyMinute();
Http事件調度
Forsun::plan()->http("http://www.baidu.com")->everyMinute();
注意:
每個任務只能設置一次調度頻率。
不支持任務輸出、任務鉤子及維護模式。
Forsun::plan是不指定任務名時自動生成,每個任務名必須唯一,相同任務名重復定義將會自動覆蓋。
移除調度$plan = Forsun::plan()->command("emails:send --force")->daily(); $plan->remove(); $plan = Forsun::plan()->command("emails:send --force")->daily(); $plan_name = $plan->getName(); Forsun::remove($plan_name);調度頻率設置
方法 | 描述 |
---|---|
->hourly(); | 每小時運行 |
->hourlyAt(17); | 每小時的第 17 分鐘執行一次任務 |
->daily(); | 每天午夜執行一次任務 |
->dailyAt("13:00"); | 每天的 13:00 執行一次任務 |
->monthly(); | 每月執行一次任務 |
->monthlyOn(4, "15:00"); | 在每個月的第四天的 15:00 執行一次任務 |
->everyMinute(); | 每分鐘執行一次任務 |
->everyFiveMinutes(); | 每五分鐘執行一次任務 |
->everyTenMinutes(); | 每十分鐘執行一次任務 |
->everyFifteenMinutes(); | 每十五分鐘執行一次任務 |
->everyThirtyMinutes(); | 每半小時執行一次任務 |
->at(strtoetime("2018-03-05 12:32:12")); | 在指定時間2018-03-05 12:32:12運行一次 |
->interval(10); | 從當前時間開始計算每10秒運行一次 |
->later(5); | 從當前時間開始計算稍后5秒運行一次 |
->delay(30); | 從當前時間開始計算稍后30秒運行一次 |
需要復雜定時控制建議生成多個定時任務或是在處理器中再次發起定時任務計劃更簡便同時也性能更高。
調度器應該盡可能使用Event或是Job通過Queue Work可以更高性能運行。
驅動原生Laravel Schedule運行#注冊 php artisan forsun:schedule:register #取消注冊 php artisan forsun:schedule:unregister
原文鏈接: https://blog.snower.me/2018/0...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28358.html
摘要:業務對賬平臺的核心目的,就是及時發現類似問題,并及時修復。這對對賬平臺的吞吐量造成了挑戰。五健康度對賬中心可以拿到業務系統及其所在整個鏈路的數據一致性信息。在分布式環境下,沒有人能回避數據一致性問題,我們對此充滿著敬畏。 一、引子 根據CAP原理,分布式系統無法在保證了可用性(Availability)和分區容忍性(Partition)之后,繼續保證一致性(Consistency)。我...
摘要:同盾技術總監張新波在第二期移動時代互聯網金融的架構趨勢中闡述了同盾是如何從零開始打造千萬級實時風控云服務,具體介紹了同盾系統平臺構建過程中主要需要解決的三大難題,以及解決這些問題的具體時實踐過程。 同盾科技,是由阿里、Paypal 反欺詐專家創建的,國內第一家風險控制與反欺詐云服務提供商,其涉及領域包括電商、B2B、互聯網金融、游戲等。同盾技術總監張新波在 UPYUN Open ...
摘要:需求用戶個人消息,平臺消息平臺給所有人發送消息。原因如果平臺用戶量較大時,假如萬,發一條系統消息,將要給萬的人發送一條,就是的消息記錄。千萬級的數據表,后期通過索引優化,結構優化,業務邏輯優化,避免大量并發查詢。 說明 本文都是參加工作的實際情況,希望對大家有所幫助?!?螞蟻爬樹不怕高,有心學習不怕老。 需求 1.用戶個人消息,平臺消息(平臺給所有人發送消息)。2.用戶未讀消息展示,...
閱讀 2073·2021-11-24 09:39
閱讀 788·2021-09-30 09:48
閱讀 980·2021-09-22 15:29
閱讀 2415·2019-08-30 14:17
閱讀 1891·2019-08-30 13:50
閱讀 1343·2019-08-30 13:47
閱讀 982·2019-08-30 13:19
閱讀 3423·2019-08-29 16:43