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