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