This commit is contained in:
yaosen 2024-07-02 09:55:32 +08:00
parent d0a7432af1
commit 27deb4be75
2 changed files with 72 additions and 2 deletions

View File

@ -15,7 +15,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getShortcutContent" /> <pagination v-show="total > 0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getQaCityList" />
<el-dialog title="添加城市" :visible.sync="dialogCreate"> <el-dialog title="添加城市" :visible.sync="dialogCreate">
<el-form label-width="120px" :model="anchors"> <el-form label-width="120px" :model="anchors">

View File

@ -266,7 +266,7 @@ class Douyin
return true; return true;
} }
public function _killMiddleProcesses($pattern, $maxProcesses) /*public function _killMiddleProcesses($pattern, $maxProcesses)
{ {
// 检查操作系统是否为 Linux // 检查操作系统是否为 Linux
if (PHP_OS !== 'Linux') { if (PHP_OS !== 'Linux') {
@ -297,6 +297,7 @@ class Douyin
$minutes = intval($runtimeParts[1]); $minutes = intval($runtimeParts[1]);
$totalMinutes = $hours * 60 + $minutes; $totalMinutes = $hours * 60 + $minutes;
if ($pid !== $currentPid) { if ($pid !== $currentPid) {
exec("kill -9 $pid"); exec("kill -9 $pid");
$processesKilled++; $processesKilled++;
@ -316,8 +317,77 @@ class Douyin
echo "Process count is not over the limit.\n"; echo "Process count is not over the limit.\n";
} }
return true; return true;
}*/
public function _killMiddleProcesses($pattern, $maxProcesses)
{
// 检查操作系统是否为 Linux
if (PHP_OS !== 'Linux') {
echo "当前系统不是 Linux跳过执行。\n";
return false;
} }
// 获取当前进程的 PID
$currentPid = getmypid();
// 获取进程列表
$command = "ps aux | grep '$pattern' | grep -v grep | grep -v '$currentPid' | awk '{print $2,$10}'";
$output = [];
exec($command, $output);
$processList = [];
foreach ($output as $line) {
list($pid, $runtime) = explode(' ', $line);
$runtimeParts = explode(':', $runtime);
$hours = intval($runtimeParts[0]);
$minutes = intval($runtimeParts[1]);
$totalMinutes = $hours * 60 + $minutes;
$processList[] = ['pid' => $pid, 'runtime' => $totalMinutes];
}
// 按运行时间排序
usort($processList, function ($a, $b) {
return $a['runtime'] <=> $b['runtime'];
});
// 过滤掉当前 PID 和运行时间最短的 PID
if (!empty($processList)) {
array_shift($processList); // 移除运行时间最短的
}
$processList = array_filter($processList, function ($process) use ($currentPid) {
return $process['pid'] != $currentPid;
});
$processCount = count($processList);
// 如果进程数量超过最大值,则终止中间部分的进程
if ($processCount > $maxProcesses) {
$processesToKill = $processCount - $maxProcesses;
$processesKilled = 0;
// 杀死运行时间最短的进程
foreach ($processList as $process) {
if ($processesKilled >= $processesToKill) {
break;
}
exec("kill -9 {$process['pid']}");
$processesKilled++;
echo "Killed process with PID: {$process['pid']}\n";
}
if ($processesKilled === 0) {
echo "No processes to kill.\n";
}
} else {
echo "Process count is not over the limit.\n";
}
return true;
}
public function _orderDetail($orderId = null, $status = null) public function _orderDetail($orderId = null, $status = null)
{ {
$orderDetail = $this->_curl("/life/trip/v2/travel_agency/book/detail", [ $orderDetail = $this->_curl("/life/trip/v2/travel_agency/book/detail", [