56 lines
1.6 KiB
PHP
56 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
require_once __DIR__ . '/vendor/autoload.php';
|
||
|
|
||
|
use Workerman\Worker;
|
||
|
use Workerman\Lib\Timer;
|
||
|
use GuzzleHttp\Client;
|
||
|
|
||
|
use think\Env;
|
||
|
|
||
|
// 读取环境变量
|
||
|
$env = new Env();
|
||
|
$env->load(__DIR__ . '/.env');
|
||
|
$serverIP = $env->get('SERVER_ADDR', '192.168.1.161');
|
||
|
$serverPort = $env->get('SERVER_PORT', 8000);
|
||
|
|
||
|
$task = new Worker();
|
||
|
|
||
|
// 定时触发邮件发送任务
|
||
|
// 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题
|
||
|
$task->count = 1;
|
||
|
$task->onWorkerStart = function(Worker $task) use ($serverIP, $serverPort)
|
||
|
{
|
||
|
$client = new Client([
|
||
|
// nacos地址
|
||
|
"base_uri" => "http://192.168.1.105:8848",
|
||
|
"timeout" => 5
|
||
|
]);
|
||
|
// 每2.5秒执行一次
|
||
|
Timer::add(5, function() use ($client, $serverIP, $serverPort)
|
||
|
{
|
||
|
$response = $client->request("put", "/nacos/v1/ns/instance/beat", [
|
||
|
"form_params" => [
|
||
|
"serviceName" => "zeroerroa-file",
|
||
|
"ip" => $serverIP,
|
||
|
"port" => $serverPort,
|
||
|
"namespaceId" => "0a1c32f2-dea1-4ec1-b546-cb4635cd7db2",
|
||
|
"groupName" => "DEFAULT_GROUP",
|
||
|
"beat" => '{
|
||
|
"cluster": "DEFAULT",
|
||
|
"ip": "' . $serverIP . '",
|
||
|
"metadata": {},
|
||
|
"port": "' . $serverPort . '",
|
||
|
"scheduled": true,
|
||
|
"serviceName": "zeroerroa-file",
|
||
|
"weight": 1
|
||
|
}'
|
||
|
],
|
||
|
]);
|
||
|
echo "send heartbeat: " . $response->getBody()->getContents();
|
||
|
echo "\n";
|
||
|
});
|
||
|
};
|
||
|
|
||
|
// 运行worker
|
||
|
Worker::runAll();
|