Laravel 設定排程,自動執行指令

Laravel 自帶類似crontab的功能,設定起來非常方便。 好處就是可以隨著專案一起上git;壞處就是會隨著專一起上git哈哈哈~

分享
Laravel 設定排程,自動執行指令

Laravel 自帶類似crontab的功能,設定起來非常方便。
好處就是可以隨著專案一起上git;壞處就是會隨著專一起上git哈哈哈~

我用自己是有設定排程固定時間進行更新,並且在執行維護的時候寄Email通知我,下面就是設定的內容啦~


首先我的層級目錄是這樣的app
 -Console
   -Commands
     -Update1.php
     -Update2.php
 -Kernel.php

然後在 Kernel.php 中寫 - 要執行的指令 && 排程<?phpnamespace App\Console;use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Config;
use Mail;
use Log;class Kernel extends ConsoleKernel
{
   // 如果有自定義的Command,這要在這先註冊 class name
   protected $commands = [
       Commands\Update1::class,
       Commands\Update2::class,
   ];protected function schedule(Schedule $schedule)
   {// 任務1
       $schedule
           ->command('update:num1')
           ->weekly() // 每週執行
           ->mondays() // 每個星期一執行
           ->at(Config::get('update.time')) // 維護的時間在config中
           ->after(function () {
               Log::info('維護開始');
               Mail::raw('維護開始', function($message) {
                   $message->to('[email protected]');
                   $message->subject('維護開始');
               });
       });// 任務2
       $schedule
           ->command...
           ->...
   }
}?>

然後要注意的是,在維護的時候一般是任務是不會生效的,
所以要用 evenInMaintenanceMode()$schedule->command('down');
$schedule->command('update:num1')->evenInMaintenanceMode(); //這樣才會執行
$schedule->command('up')->evenInMaintenanceMode();


承上:要如何自訂 Command 呢?

首先,透過artisan建立命令php artisan make:command Update1

然後在 app/Console/Commands/ 下會生成 Update1.php ,內容為<?phpnamespace App\Console\Commands;use Illuminate\Console\Command;class Update1 extends Command
{
   // 取名你要下的指令名稱,可以和 class name 不同
   protected $signature = 'update:num1';// 簡單的功能描述
   protected $description = 'Update num1 Sum';public function __construct()
   {
       parent::__construct();
   }// 這個命要要執行的內容
   public function handle()
   {
       $this->mySum();
   }// 這句可以讓執行完後,在畫面上顯示一些提示
   $this->info('Update num1 finished');// handle() 裡面可以用外面的function才不會一大包    
   protected function mySum($x, $y)
   {
       ...
   }
}?>

更詳細的排程設定可以參考
https://laravel-china.org/docs/laravel/5.5/scheduling/1325#maintenance-mode

Read more

Gaze Guard 短影片旁白的 TTS 成本與隱私防護示意圖

短影片旁白的成本,其實比我想像低

我最近在做一支 Gaze Guard 的 20 秒產品介紹影片。 原本想說簡單做個動畫就好。 後來想說如果有配音,會感覺比較生動也比較能夠描述使用的情境和達成的效果。 這次我測了什麼 我測的是產品介紹影片用的英文旁白。 工具底層使用的是 Edge TTS,也就是 Microsoft Edge 的線上 Text-to-Speech 服務。常見的底層工具是 edge-tts。 這不是正式 Azure Speech API 的計費路徑。 在我這次的環境裡,它沒有要求 API key,也沒有回傳可見的 per-use billing。 所以這次測試本身,比較像是快速 prototype。 如果未來要正式商用、穩定大量產出,就要回頭看 Azure Speech、OpenAI TTS、ElevenLabs 這類正式付費方案。

By SteepingLogic
用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard

用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard

# 用 Cloudflare Tunnel,從外面連回本機 Hermes Dashboard 我有一台 local Hermes。 平常它就在自己的機器上跑。 可能是家裡的桌機。 可能是 NAS。 可能是一台一直開著的 Linux box。 也可能只是我自己的筆電。 問題是,人一離開那個網路,Hermes dashboard 就變成一個只存在於 localhost 的東西。 我想在外面打開它。 但我沒有 static IP。 沒有買網域。 也不想進路由器開 port forwarding。 因為那條路通常長這樣: * 找 public IP * 設定 NAT * 開 port * 處理防火牆 * 補 HTTPS * 設定憑證 * 再擔心 origin IP 被掃 非常友善。 所以這篇先走另一條路:

By SteepingLogic
Invoshot 開發日記|正向回饋

Invoshot 開發日記|正向回饋

想信很多人在開發的時候都常常會做一件事,那就是: 不斷地反覆思考,在腦袋內把流程跑過很多次,然後思考哪裡可以做得更好 不限坐在電腦前的時後,可能是在捷運上,在人行道上, 在馬桶上或是在洗澡的時候 🤪 我不斷地在想:AI 辨識完一張發票後,使用者接下來最需要的是什麼? 每個欄位都要核對嗎? 這麼多欄位真的不會漏看嗎? 所以我在 Invoshot 裡加了提醒功能。 辨識結果出來後,系統會把比較需要注意的地方標出來。 不是把所有不確定都丟給使用者,而是把他真正需要介入的那幾秒鐘留出來。 今天收到一則訊息: 今天用了有新增提醒功能很棒! 真的有變輕鬆 😎 看到這句的時候,我第一個想到的是: 原來那些只是我腦內風暴的優化項目,使用者是真的可以感受到差異的! 感覺又有動力了!

By SteepingLogic