前幾天遇到添加的定時任務(wù) Task,經(jīng)常會同一時間執(zhí)行兩次。嘗試了很多辦法:
1、設(shè)置進程數(shù) count = 1,無效
2、升級 crontab 包,composer workerman/crontab ^1.0.6 ,無效
3、安 webman 定時任務(wù)文檔 check 了多遍,無效
試著刪除 process.php 中添加的 task handler,在服務(wù)器上的 docker 環(huán)境正常了,定時任務(wù)可以每次只執(zhí)行一次,本地的 Mac 電腦上卻不執(zhí)行任何定時任務(wù)了。
服務(wù)器使用的 docker 鏡像:
version: "3.7"
services:
data-tools:
image: krisss/docker-webman:${DOCKER_WEBMAN_VERSION:-8.2-cli-alpine}
ports:
- "${DOCKER_WEBMAN_PORT:-8790}:8787"
volumes:
- .:/app
webman 版本 1.5.16
定時任務(wù)代碼怎么寫的?寫在什么地方的?
定時任務(wù)寫在 process 目錄下的 Task.php
<?php
namespace process;
use app\service\feishu\Assistant;
use app\service\ThBalanceService;
use support\Log;
use Workerman\Crontab\Crontab;
class Task
{
new Crontab('*/30 * * * * *', function () {
$date = date('Y-m-d H:i:s');
echo $date . "\n";
Log::info(sprintf("send msg test %s", $date));
});
}
}
```php
日志輸出:
2024-05-08?23:04:00]?default.?INFO:?send?msg?test?2024-05-08?23:04:00?[]
[2024-05-08?23:04:00]?default.?INFO:?send?msg?test?2024-05-08?23:04:00?[]
[2024-05-08?23:04:30]?default.INFO:?send?msg?test?2024-05-08?23:04:30??[]
[2024-05-08?23:04:30]?default.?INFO:?send?msg?test?2024-05-08?23:04:30?[]
[2024-05-08?23:05:00]?default.?INFO:?send?msg?test?2024-05-08?23:05:00?[]?
[2024-05-08?23:05:00]?default.?INFO:?send?msg?test?2024-05-08?23:05:00?[]?
[2024-05-08?23:05:30]?default.INFO:?send?msg?test?2024-05-08?23:05:30?[]
2024-05-08?23:05:301?default.?INFO:?send?msg?test?2024-05-08?23:05:30 []
2024-05-08?23:06:00]?default.?INFO:?send?msg?test?2024-05-08?23:06:00?[]
[2024-05-08?23:06:00]?default.?INFO:?send?msg?test?2024-05-08?23:06:00?[]?
# 注釋 process.php 中添加的 task handler 后正常,每次輸出一條
[2024-05-08?23:07:00]?default.?INFO:?send?msg?test?2024-05-08?23:07:00?[]
[2024-05-08?23:07:00]?default.?INFO:?send?msg?test?2024-05-08?23:07:30?[]
[2024-05-08?23:07:00]?default.?INFO:?send?msg?test?2024-05-08?23:08:00?[]
代碼不全,看不出設(shè)置定時任務(wù)的時機,onWorkerStart里運行的?
可能是你服務(wù)器還有一個task進程沒正常關(guān)閉。ps auxf能看到進程情況