2024-09-12 22:11:31 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
require_once __DIR__ . '/vendor/autoload.php';
|
|
|
|
|
|
|
|
|
|
use Workerman\Worker;
|
|
|
|
|
use Workerman\Lib\Timer;
|
|
|
|
|
use GuzzleHttp\Client;
|
|
|
|
|
|
|
|
|
|
use think\Env;
|
|
|
|
|
|
|
|
|
|
// 读取环境变量
|
|
|
|
|
$env = new Env();
|
2024-09-14 10:25:39 +08:00
|
|
|
|
// nacos的注册地址
|
2024-09-13 10:03:52 +08:00
|
|
|
|
$nacosAddr = $env->get('NACOS_ADDR', '192.168.1.105:8848');
|
2024-09-14 10:25:39 +08:00
|
|
|
|
// 服务可以访问到的IP
|
|
|
|
|
$serviceAddr = $env->get('SERVER_ADDR');
|
|
|
|
|
// 服务暴露的端口
|
|
|
|
|
$servicePort = $env->get('SERVICE_PORT', 8000);
|
2024-09-14 11:25:34 +08:00
|
|
|
|
// 命名空间变量
|
|
|
|
|
$namespaceId = $env->get('NAMESPACE_ID', '0a1c32f2-dea1-4ec1-b546-cb4635cd7db2');
|
|
|
|
|
// 服务名称
|
|
|
|
|
$serviceName = $env->get('SERVICE_NAME', 'zeroerroa-file');
|
2024-09-12 22:11:31 +08:00
|
|
|
|
|
|
|
|
|
$task = new Worker();
|
|
|
|
|
|
|
|
|
|
// 定时触发邮件发送任务
|
|
|
|
|
// 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题
|
|
|
|
|
$task->count = 1;
|
2024-09-14 11:25:34 +08:00
|
|
|
|
$task->onWorkerStart = function(Worker $task) use ($serviceAddr, $servicePort, $nacosAddr, $namespaceId, $serviceName)
|
2024-09-12 22:11:31 +08:00
|
|
|
|
{
|
|
|
|
|
$client = new Client([
|
|
|
|
|
// nacos地址
|
2024-09-13 10:03:52 +08:00
|
|
|
|
"base_uri" => $nacosAddr,
|
2024-09-12 22:11:31 +08:00
|
|
|
|
"timeout" => 5
|
|
|
|
|
]);
|
2024-09-19 17:44:05 +08:00
|
|
|
|
var_dump($serviceAddr, $servicePort, $nacosAddr, $namespaceId, $serviceName);
|
2024-09-13 11:05:08 +08:00
|
|
|
|
// 心跳检测,每8秒执行一次
|
2024-09-14 11:25:34 +08:00
|
|
|
|
Timer::add(8, function() use ($client, $serviceAddr, $servicePort, $namespaceId, $serviceName)
|
2024-09-12 22:11:31 +08:00
|
|
|
|
{
|
2024-09-14 10:25:39 +08:00
|
|
|
|
$client->request("put", "/nacos/v1/ns/instance/beat", [
|
2024-09-12 22:11:31 +08:00
|
|
|
|
"form_params" => [
|
2024-09-14 11:25:34 +08:00
|
|
|
|
"serviceName" => $serviceName,
|
2024-09-14 10:25:39 +08:00
|
|
|
|
"ip" => $serviceAddr,
|
|
|
|
|
"port" => $servicePort,
|
2024-09-14 11:25:34 +08:00
|
|
|
|
"namespaceId" => $namespaceId,
|
2024-09-12 22:11:31 +08:00
|
|
|
|
"groupName" => "DEFAULT_GROUP",
|
|
|
|
|
"beat" => '{
|
|
|
|
|
"cluster": "DEFAULT",
|
2024-09-14 10:25:39 +08:00
|
|
|
|
"ip": "' . $serviceAddr . '",
|
2024-09-12 22:11:31 +08:00
|
|
|
|
"metadata": {},
|
2024-09-19 17:44:05 +08:00
|
|
|
|
"port": ' . $servicePort . ',
|
2024-09-12 22:11:31 +08:00
|
|
|
|
"scheduled": true,
|
2024-09-19 17:44:05 +08:00
|
|
|
|
"serviceName": "' . $serviceName . '",
|
2024-09-12 22:11:31 +08:00
|
|
|
|
"weight": 1
|
|
|
|
|
}'
|
|
|
|
|
],
|
|
|
|
|
]);
|
2024-09-13 11:05:08 +08:00
|
|
|
|
// echo "send heartbeat: " . $response->getBody()->getContents() . "\n";
|
|
|
|
|
// echo json_encode($_ENV, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
|
|
|
|
|
// echo "\n";
|
2024-09-12 22:11:31 +08:00
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 运行worker
|
|
|
|
|
Worker::runAll();
|