mirror of
https://gitee.com/ulthon/ulthon_admin.git
synced 2026-07-07 18:42:49 +08:00
修复多进程定时器的重复执行错误
This commit is contained in:
@@ -105,6 +105,11 @@ class TimerBase extends Command
|
|||||||
|
|
||||||
public function runParallel()
|
public function runParallel()
|
||||||
{
|
{
|
||||||
|
// 重新构造命令行参数,以便兼容workerman的命令
|
||||||
|
global $argv;
|
||||||
|
$argv = [];
|
||||||
|
array_unshift($argv, 'think', 'start');
|
||||||
|
|
||||||
$host = $this->host;
|
$host = $this->host;
|
||||||
$site_host = $this->siteHost;
|
$site_host = $this->siteHost;
|
||||||
$output = $this->output;
|
$output = $this->output;
|
||||||
@@ -119,10 +124,16 @@ class TimerBase extends Command
|
|||||||
Timer::add(1, function () use ($worker, $host, $site_host, $output, $input) {
|
Timer::add(1, function () use ($worker, $host, $site_host, $output, $input) {
|
||||||
$request_list = $worker->timerRequestList;
|
$request_list = $worker->timerRequestList;
|
||||||
foreach ($request_list as $request_item) {
|
foreach ($request_list as $request_item) {
|
||||||
|
$output->writeln(date('Y-m-d H:i:s') . ': build site request async:' . $request_item['target']);
|
||||||
if (!isset($request_item['is_running'])) {
|
if (!isset($request_item['is_running'])) {
|
||||||
$request_item['is_running'] = false;
|
$request_item['is_running'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($request_item['is_running']) {
|
||||||
|
$output->writeln('进行中,跳过');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!isset($request_item['last_run_time'])) {
|
if (!isset($request_item['last_run_time'])) {
|
||||||
$request_item['last_run_time'] = 0;
|
$request_item['last_run_time'] = 0;
|
||||||
}
|
}
|
||||||
@@ -134,15 +145,13 @@ class TimerBase extends Command
|
|||||||
$request_item['is_running'] = true;
|
$request_item['is_running'] = true;
|
||||||
$request_item['last_run_time'] = time();
|
$request_item['last_run_time'] = time();
|
||||||
|
|
||||||
$output->writeln(date('Y-m-d H:i:s') . ': build site request async:' . $request_item['target']);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
$options = [
|
$options = [
|
||||||
'max_conn_per_addr' => Config::get('timer.max_conn_per_addr', 1000),
|
'max_conn_per_addr' => Config::get('timer.max_conn_per_addr', 1000),
|
||||||
'keepalive_timeout' => Config::get('timer.keepalive_timeout', 86400),
|
'keepalive_timeout' => Config::get('timer.keepalive_timeout', 86400),
|
||||||
'connect_timeout' => Config::get('timer.connect_timeout', 86400),
|
'connect_timeout' => Config::get('timer.connect_timeout', 86400),
|
||||||
'timeout' => Config::get('timer.timeout', 86400),
|
'timeout' => Config::get('timer.timeout', 86400),
|
||||||
];
|
];
|
||||||
$http = new HttpClient($options);
|
$http = new HttpClient($options);
|
||||||
|
|
||||||
@@ -151,13 +160,13 @@ class TimerBase extends Command
|
|||||||
'Host' => $site_host,
|
'Host' => $site_host,
|
||||||
'Accept' => 'application/json,text/plain',
|
'Accept' => 'application/json,text/plain',
|
||||||
],
|
],
|
||||||
'success' => function ($response) use ($request_item) {
|
'success' => function ($response) use ($request_item, $output) {
|
||||||
$request_item['is_running'] = false;
|
$request_item['is_running'] = false;
|
||||||
echo $response->getBody();
|
$output->writeln($response->getBody());
|
||||||
},
|
},
|
||||||
'error' => function ($exception) use ($request_item) {
|
'error' => function ($exception) use ($request_item, $output) {
|
||||||
$request_item['is_running'] = false;
|
$request_item['is_running'] = false;
|
||||||
echo $exception;
|
$output->writeln($exception);
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user