按照官方教程:
http://www.wtbis.cn/doc/workerman/components/crontab.html
將其中的代碼放入一個crontab.php的文檔
如果放在根目錄,單獨執(zhí)行:
php crontab.php start
是能正常工作的
我想讓它隨著系統(tǒng)命令
php start.php restart
一起啟動,該如何做呢?
感謝
------------分割線--------------
通過官方的AI,已解決:
在 app/foo 目錄下創(chuàng)建一個新的進程文件,例如 Task.php,并在其中定義你的定時任務。例如:
<?php
namespace app\foo;
use Workerman\Crontab\Crontab;
class Task
{
public function onWorkerStart()
{
// 每秒鐘執(zhí)行一次
new Crontab('/1 ', function(){
echo date('Y-m-d H:i:s')."\n";
});
}
}
接下來,打開配置文件 config/process.php,并新增如下配置以注冊你的定時任務進程:
return [
// 其它配置...
'foo_task' => [
'handler' => app\foo\Task::class
],
];
注意,這里放在第一級
最后,重啟webman以使配置生效。請注意,定時任務不會馬上執(zhí)行,所有定時任務將會在下一分鐘開始計時執(zhí)行。
說明
通過以上步驟,你在 app/foo 目錄下的定時任務進程會在webman啟動時自動運行。確保你的定時任務邏輯在 onWorkerStart 方法中正確實現(xiàn)。
佬,按照你的配置 啟動是none 也沒執(zhí)行
<?php
declare(strict_types=1);
namespace app\admin\timer;
use Workerman\Worker;
use Workerman\Crontab\Crontab;
class Timer
{
/**
* 初始化定時器
*/
public static function init()
{
// 設置時區(qū)
date_default_timezone_set('PRC');
$worker = new Worker();
$worker->onWorkerStart = function () {
// 每分鐘執(zhí)行一次的任務
new Crontab('0 * * * * *', function() {
self::minuteTask();
});
// 每小時執(zhí)行一次的任務
new Crontab('0 0 * * * *', function() {
self::hourlyTask();
});
// 每天凌晨執(zhí)行的任務
new Crontab('0 0 0 * * *', function() {
self::dailyTask();
});
};
Worker::runAll();
}
/**
* 每分鐘執(zhí)行的任務
*/
protected static function minuteTask()
{
try {
// 在這里添加每分鐘需要執(zhí)行的任務
echo date('Y-m-d H:i:s') . " - 執(zhí)行每分鐘任務\n";
} catch (\Exception $e) {
echo date('Y-m-d H:i:s') . " - 每分鐘任務執(zhí)行失敗: " . $e->getMessage() . "\n";
}
}
/**
* 每小時執(zhí)行的任務
*/
protected static function hourlyTask()
{
try {
// 在這里添加每小時需要執(zhí)行的任務
echo date('Y-m-d H:i:s') . " - 執(zhí)行每小時任務\n";
} catch (\Exception $e) {
echo date('Y-m-d H:i:s') . " - 每小時任務執(zhí)行失敗: " . $e->getMessage() . "\n";
}
}
/**
* 每天執(zhí)行的任務
*/
protected static function dailyTask()
{
try {
// 在這里添加每天需要執(zhí)行的任務
echo date('Y-m-d H:i:s') . " - 執(zhí)行每日任務\n";
} catch (\Exception $e) {
echo date('Y-m-d H:i:s') . " - 每日任務執(zhí)行失敗: " . $e->getMessage() . "\n";
}
}
}