国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

剖析 Laravel 計劃任務--事件屬性

xiaowugui666 / 2283人閱讀

摘要:所以在這里創建一個事件的兩個實際方法是通過調用或,第一個提交一個的實例,后者提交來做一些特殊處理。那么會用表達式檢查命令是否到期嗎恰恰相反,使用庫來確定命令是否基于當前系統時間相對于我們設置的時區。

譯文GitHub https://github.com/yuansir/diving-laravel-zh

原文鏈接 https://divinglaravel.com/task-scheduling/properties-of-an-event

Every entry you add is converted into an instance of IlluminateConsoleSchedulingEvent and stored in an $events class property of the Scheduler, an Event object consists of the following:

你添加的每個記錄都將轉換為 IlluminateConsoleSchedulingEvent 的實例,并存儲在Scheduler的 $events 類屬性中,Event對象由以下內容組成:

Command to run

CRON Expression

Timezone to be used to evaluate the time

Operating System User the command should run as

The list of Environments the command should run under

Maintenance mode configuration

Event Overlapping configuration

Command Foreground/Background running configuration

A list of checks to decide if the command should run or not

Configuration on how to handle the output

Callbacks to run after the command runs

Callbacks to run before the command runs

Description for the command

A unique Mutex for the command

命令運行

CRON表達式

用于評估時間的時區

操作系統運行該命令的用戶

命令應該運行的環境列表

維護模式配置

事件重疊配置

命令前臺/后臺運行配置

用于決定該命令是否運行的檢查列表

如何處理輸出的配置

命令運行后運行的回調

在命令運行前運行的回調

命令說明

命令的唯一Mutex

The command to run could be one of the following:

命令可能像下面一種方式運行:

A callback

A command to run on the operating system

An artisan command

A job to be dispatched

回調

在操作系統上運行的命令

artisan命令

被調度的作業

Using a callback 使用回調

In case of a callback, the Container::call() method is used to run the value we pass which means we can pass a callable or a string representing a method on a class:

在回調的情況下,Container::call() 方法用于運行我們傳遞的值,這意味著我們可以傳遞一個可以調用或表示方法的字符串:

protected function schedule(Schedule $schedule)
{
    $schedule->call(function () {
        DB::table("recent_users")->delete();
    })->daily();
}

Or:

protected function schedule(Schedule $schedule)
{
    $schedule->call("MetricsRepository@cleanRecentUsers")->daily();
}
Passing a command for the operating system 調用操作系統的命令

If you would like to pass a command for the operating system to run you can use exec():

如果要運行操作系統的命令,可以使用 exec()

$schedule->exec("php /home/sendmail.php --user=10 --attachInvoice")->monthly();

You can also pass the parameters as an array:

您還可以將數組作為參數:

$schedule->exec("php /home/sendmail.php", [
    "--user=10",
    "--subject" => "Reminder",
    "--attachInvoice"
])->monthly();
Passing an artisan command 調用一個artisan命令
$schedule->command("mail:send --user=10")->monthly();

You can also pass the class name:

你也可以傳一個類名

$schedule->command("AppConsoleCommandsEmailCommand", ["user" => 10])->monthly();

The values you pass are converted under the hood to an actual shell command and passed to exec() to run it on the operating system.

你傳遞的值將轉換為實際的shell命令,并傳遞給 exec() 在操作系統上運行。

Dispatching a Job 調度一個作業

You may dispatch a job to queue using the Job class name or an actual object:

您可以使用Job類名稱或實際對象將作業分發到隊列中:

$schedule->job("AppJobsSendOffer")->monthly();

$schedule->job(new SendOffer(10))->monthly();

Under the hood Laravel will create a callback that calls the dispatch() helper method to dispatch your command.

Laravel會創建一個回調函數,調用 dispatch() 輔助方法來分發你的命令。

So the two actual methods of creating an event here is by calling exec() or call(), the first one submits an instance of IlluminateConsoleSchedulingEvent and the latter submits IlluminateConsoleSchedulingCallbackEvent which has some special handling.

所以在這里創建一個事件的兩個實際方法是通過調用 exec()call(),第一個提交一個 IlluminateConsoleSchedulingEvent 的實例,后者提交 IlluminateConsoleSchedulingCallbackEvent來做一些特殊處理。

Building the cron expression 創建cron表達式

Using the timing method of the Scheduled Event, laravel builds a CRON expression for that event under the hood, by default the expression is set to run the command every minute:

使用計劃事件的計時方法,laravel會為該事件創建一個CRON表達式,默認情況下,表達式設置為每分鐘運行一次命令:

* * * * * *

But when you call hourly() for example the expression will be updated to:

但當你調用 hourly() 時表達式會更新成這樣:

0 * * * * *

If you call dailyAt("13:30") for example the expression will be updated to:

當你調用 dailyAt("13:30") 時表達式會更新成這樣:

30 13 * * * *

If you call twiceDaily(5, 14) for example the expression will be updated to:

當你調用 twiceDaily(5, 14) 時表達式會更新成這樣:

0 5,14 * * * *

A very smart abstraction layer that saves you tons of research to find the right cron expression, however you can pass your own expression if you want as well:

一個非常聰明的抽象層,可以節省大量的精力來找到正確的cron表達式,但是如果你只要你想你也可以傳遞你自己的表達式:

$schedule->command("mail:send")->cron("0 * * * * *");
How about timezones? 如何設置時區?

If you want the CRON expression to be evaluated with respect to a specific timezone you can do that using:

如果您希望CRON表達式針對特定時區,則可以使用以下方式進行:

->timezone("Europe/London")

Under the hood Laravel checks the timezone value you set and update the Carbon date instance to reflect that.

Laravel檢查您設置的時區值,并更新 Carbon 日期實例使其起作用。

So laravel checks if the command is due using the CRON expression? 那么Laravel會用CRON表達式檢查命令是否到期嗎?

Exactly, Laravel uses the mtdowling/cron-expression library to determine if the command is due based on the current system time (with respect to the timezone we set).

恰恰相反,Laravel使用 mtdowling/cron-expression 庫來確定命令是否基于當前系統時間(相對于我們設置的時區)。

Adding Constraints on running the command Duration constraints 在運行命令時添加限制 持續時間限制

For example if you want the command to run daily but only between two specific dates:

例如,如果您希望命令每天運行,但只能在兩個特定日期之間運行:

->between("2017-05-27", "2017-06-26")->daily();

And if you want to prevent it from running during a specific period:

如果你想防止它在一段特定的時間內運行:

->unlessBetween("2017-05-27", "2017-06-26")->daily();
Environment constraints 環境限制

You can use the environments() method to pass the list of environments the command is allowed to run under:

您可以使用 environments() 設置傳遞命令允許運行的環境列表:

->environments("staging", "production");
Maintenance Mode 維護模式

By default scheduled commands won"t run when the application is in maintenance mode, however you can change that by using:

默認情況下,當應用程序處于維護模式時,調度的命令不會運行,但是您可以通過使用以下命令來更改:

->evenInMaintenanceMode()
OS User 系統用戶

You can set the Operating System user that"ll run the command using:

你可以設置那個操作系統用戶來執行這個命令:

->user("forge")

Under the hood Laravel will use sudo -u forge to set the user on the operating system.

Laravel將使用 sudo -u forge 設置在操作系統上運行的用戶。

Custom Constraints 自定義限制

You can define your own custom constraint using the when() and skip() methods:

您可以使用 when()skip() 方法定義自定義約束:

// Runs the command only when the user count is greater than 1000
->when(function(){
    return User::count() > 1000;
});

// Runs the command unless the user count is greater than 1000
->skip(function(){
    return User::count() > 1000;
});
Before and After callbacks 之前和之后回調函數

Using the before() and then() methods you can register callbacks that"ll run before or after the command finishes execution:

使用 before()then() 方法可以注冊在命令完成執行之前或之后運行的回調函數:

->before(function(){
    Mail::to("myself@Mail.com", new CommandStarted());
})
->then(function(){
    Mail::to("myself@Mail.com", new CommandFinished());
});

You can also ping URLs or webhooks using the pingBefore() and thenPing() methods:

您還可以使用 pingBefore() and thenPing() 方法ping URL或webhooks:

->ping("https://my-webhook.com/start")->thenPing("https://my-webhook.com/finish")

Using these commands laravel registers a before/after callbacks under the hood and uses Guzzle to send a GET HTTP request:

使用這些命令laravel在注冊一個前/后回調,并使用Guzzle發送一個 GET HTTP請求:

return $this->before(function () use ($url) {
    (new HttpClient)->get($url);
});

轉載請注明:?轉載自Ryan是菜鳥 | LNMP技術棧筆記

如果覺得本篇文章對您十分有益,何不 打賞一下

本文鏈接地址:?剖析Laravel計劃任務--事件屬性

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/23240.html

相關文章

  • 剖析 Laravel 計劃任務--避免重復

    摘要:持有雞的人是唯一被允許談話的人。這樣可以確保人們互不說話,也有自己的空間。所以當作業第一次啟動時,創建一個互斥,然后每次作業運行時,它檢查互斥是否存在,只有在沒有工作的情況下運行。 譯文GitHub https://github.com/yuansir/diving-laravel-zh 原文鏈接 https://divinglaravel.com/task-scheduling/pr...

    li21 評論0 收藏0
  • 剖析 Laravel 計劃任務--創建和運行系統命令

    摘要:譯文原文鏈接在啟動計劃任務的事件的時候,的進度管理器在對象上調用方法,表示該事件發生在內。在方法里面定義每一個命令的互斥所以它是事件的表達式和命令字符串的組合。 譯文GitHub https://github.com/yuansir/diving-laravel-zh 原文鏈接 https://divinglaravel.com/task-scheduling/building-and...

    luodongseu 評論0 收藏0
  • 剖析 Laravel 計劃任務--初探

    摘要:表示該工作應該在每個月日上午運行這里還有一些其他的示例表示工作應該在星期三每分鐘運行一次。表示該工作應該每天在凌晨點和點運行兩次。方法調用的實例作為唯一的參數,這是用于記錄您提供的作業的計劃任務管理器,并決定每次守護進程應該運行什么。 譯文GitHub https://github.com/yuansir/diving-laravel-zh 原文鏈接 https://divinglar...

    mo0n1andin 評論0 收藏0
  • Laravel Telescope:優雅的應用調試工具

    摘要:文章轉自視頻教程優雅的應用調試工具新擴展是由和開源的應用的調試工具。計劃任務列出已運行的計劃任務。該封閉函數會被序列化為一個長字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉自:https://laravel-china.org/topics/19013視頻教程:047. 優雅的應用調試工具--laravel/telesco...

    MasonEast 評論0 收藏0
  • laravel artisan

    摘要:用法顯示當前的幫助信息不輸出任何信息顯示當前版本強制輸出禁用輸出不進行交互運行環境詳細輸出普通更加詳細可用命令全局命令清除編譯生成的文件,相當于的反操作將站點設為維護狀態顯示當前運行環境來源于 laravel artisan 用法 $ php artisan Laravel Framework version 5.1.46 (LTS) Usage: command [options] ...

    Betta 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<