|
| 1 | +import Layout from "@/components/Layout"; |
| 2 | +import Button from "@/components/Common/button"; |
| 3 | +import Section from "@/components/Common/section"; |
| 4 | +import Alert from "@/components/Common/alert"; |
| 5 | +import Tabs from "@/components/Common/tab"; |
| 6 | +import Step from "@/components/Common/step"; |
| 7 | +import Card from "@/components/Common/card"; |
| 8 | +import Important from "@/components/Common/important"; |
| 9 | +import Highlight from "react-highlight"; |
| 10 | +import Link from "next/link"; |
| 11 | +import NextPage from "@/components/Common/nextpage"; |
| 12 | + |
| 13 | +import Head from "next/head"; |
| 14 | + |
| 15 | +<Layout> |
| 16 | +<Head> |
| 17 | +<title>مستندات تنظیم Cron Job در dotNET - لیارا</title> |
| 18 | + |
| 19 | +<meta property="og:title" content="مستندات خدمات رایانش ابری لیارا" /> |
| 20 | +<meta property="og:description" content="مستندات نحوه تنظیم Cron Job در پلتفرم dotNET در لیارا" /> |
| 21 | +<meta property="og:image" content="https://files.liara.ir/liara/logos/liara-poster.jpg" /> |
| 22 | +</Head> |
| 23 | +# تنظیم Cron Job |
| 24 | +<hr className="mb-2" /> |
| 25 | + |
| 26 | +Cron job یک وظیفه زمانبندی شده در سیستمعاملهای Unix و Linux است که به کاربران اجازه میدهد تا اسکریپتها یا دستورات را در فواصل زمانی منظم اجرا کنند. این ابزار به خصوص برای انجام وظایف دورهای مثل پشتیبانگیری، ارسال ایمیل، اجرای اسکریپتهای نگهداری سیستم، یا بهروزرسانی اطلاعات مفید است. |
| 27 | +<div className="h-4" /> |
| 28 | + |
| 29 | + |
| 30 | + برای تنظیم یک Cron Job در dotNET میتوانید از <Important>IHostedService</Important> یا <Important>BackgroundService</Important>، استفاده کنید. |
| 31 | +به عنوان مثال، فرض کنید که در فایل <Important>Program.cs</Important> مشخص کردید که در صورت ارسال درخواست <Important>POST</Important> به مسیر <Important>execute/</Important>، یک لاگ تحت عنوان <Important>The script is executed</Important> ثبت شود: |
| 32 | + |
| 33 | +<div className="h-2" /> |
| 34 | +<div dir="ltr"> |
| 35 | +<Highlight className="csharp"> |
| 36 | +{`app.MapPost("/execute", () => |
| 37 | +{ |
| 38 | + Console.WriteLine("The script is executed"); |
| 39 | + return Results.Ok("Script executed successfully"); |
| 40 | +});`} |
| 41 | +</Highlight> |
| 42 | +</ div> |
| 43 | +<div className="h-2" /> |
| 44 | + |
| 45 | +و اکنون، فرض کنید که قصد دارید در هر دقیقه، به مسیر |
| 46 | +مشخص شده، درخواست <Important>POST</Important> ارسال کنید. |
| 47 | +برای اینکار، میتوانید در مسیر اصلی پروژه و در کنار فایل <Important>Program.cs</Important>، یک فایل به نام <Important>ScheduledJobService.cs</Important> ایجاد کنید و کد زیر را در آن قرار دهید: |
| 48 | + |
| 49 | +<div className="h-2" /> |
| 50 | +<div dir="ltr"> |
| 51 | +<Highlight className="csharp"> |
| 52 | +{`public class ScheduledJobService : BackgroundService |
| 53 | +{ |
| 54 | + private readonly ILogger<ScheduledJobService> _logger; |
| 55 | + private readonly HttpClient _httpClient; |
| 56 | +
|
| 57 | + public ScheduledJobService(ILogger<ScheduledJobService> logger) |
| 58 | + { |
| 59 | + _logger = logger; |
| 60 | + _httpClient = new HttpClient(); |
| 61 | + } |
| 62 | +
|
| 63 | + protected override async Task ExecuteAsync(CancellationToken stoppingToken) |
| 64 | + { |
| 65 | + while (!stoppingToken.IsCancellationRequested) |
| 66 | + { |
| 67 | + try |
| 68 | + { |
| 69 | + _logger.LogInformation("Executing scheduled request..."); |
| 70 | + |
| 71 | + // send a POST request to the server |
| 72 | + var response = await _httpClient.PostAsync("http://<app-name>:<app-port>/execute", null, stoppingToken); |
| 73 | + |
| 74 | + _logger.LogInformation($"Response: {response.StatusCode}"); |
| 75 | +
|
| 76 | + } |
| 77 | + catch (Exception ex) |
| 78 | + { |
| 79 | + _logger.LogError($"Error in ScheduledJobService: {ex.Message}"); |
| 80 | + } |
| 81 | +
|
| 82 | + // wait for 1 minute |
| 83 | + await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken); |
| 84 | + } |
| 85 | + } |
| 86 | +} |
| 87 | +`} |
| 88 | +</Highlight> |
| 89 | +</ div> |
| 90 | +<div className="h-2" /> |
| 91 | + |
| 92 | +در قطعه کد فوق، بهجای <Important><app-name></Important> و <Important><app-port></Important>، نام برنامه و پورت آن را قرار دهید. |
| 93 | +اکنون باید سرویس پس زمینه را مانند شکل زیر به فایل <Important>Program.cs</Important> اضافه کنید: |
| 94 | + |
| 95 | +<div className="h-2" /> |
| 96 | +<div dir="ltr"> |
| 97 | +<Highlight className="csharp"> |
| 98 | +{`builder.Services.AddHostedService<ScheduledJobService>();`} |
| 99 | +</Highlight> |
| 100 | +</ div> |
| 101 | +<div className="h-2" /> |
| 102 | + |
| 103 | + |
| 104 | +تمامی کارها انجام شده است و اکنون، میتوانید |
| 105 | +برنامهتان را در لیارا مستقر کنید. |
| 106 | + |
| 107 | +<div className="h-2" /> |
| 108 | +<Alert variant="success"> |
| 109 | +<p> |
| 110 | + یک برنامه مثال در <a href="" className="text-[#2196f3] ">گیتهاب لیارا</a> قرار گرفته است که میتوانید از آن، استفاده کنید. |
| 111 | +</p> |
| 112 | +</Alert> |
| 113 | + |
| 114 | + |
| 115 | +</Layout> |
0 commit comments