За последние 24 часа нас посетил 70321 программист и 5687 роботов. Сейчас ищут 1167 программистов ...

Создать статическую страницу на PHP, внутри которой была бы динамическая область для HTML кода

Тема в разделе "PHP для новичков", создана пользователем Mr.Toad, 7 июн 2023.

  1. Mr.Toad

    Mr.Toad Новичок

    С нами с:
    29 мар 2023
    Сообщения:
    7
    Симпатии:
    0
    Приветствую!
    Постараюсь на корявом языке объяснить что я хочу реализовать.
    Если с самого начала...
    Решил я сделать напоминалку по аптайму win серверов и сделал таки, на powershell.
    Вроде все довольно красиво и то что мне нужно, но это статические данные и я не могу понять, как мне сделать, чтобы страница на том же IIS обновлялась и не падала...

    В итоге, подумал о PHP, но поскольку я в нем почти 0, то прошу помощи в реализации.
    Схема такая:
    Есть MSSQL сервер, в который записываются данные о серверах.
    Есть скрипт (на powershell), который собирает данные и формирует HTML код.

    В итоге, я подумал о такой реализации.
    По идее, должна быть некая статическая страница, внутри которой была бы форма для отображения динамических данных, которые бы обновлялись каждые 5 минут, например.
    Т.е. есть страница, назовем ее "Аптайм серверов" а внутри есть код, который запрашивает данные из MSSQL и формирует табличку, которая обновляется каждые 5 минут.
    Надеюсь понятно написал )

    Для примера код на powershell:
    Код (Text):
    1.  
    2. function sqlQuery ($srvr = 'localhost', $database = 'Services', $userName = 'service', $pass = 'service', $query){
    3.     Invoke-Sqlcmd -ServerInstance $srvr -Database $database -Username $userName -Password $pass -Query $query
    4. }
    5.  
    6. if (!($session)){
    7.     $session = New-PSSession -ComputerName nprdc.radiofid.local
    8.     Import-Module -PSsession $session -Name ActiveDirectory
    9. }
    10.  
    11. $Computers = (Get-ADComputer -Properties * -Filter * | ? { $_.LastLogonDate -gt (Get-Date).AddDays(-35) -and $_.OperatingSystem -match 'server' })
    12. foreach ($srv in $Computers){
    13.     $server = $srv.Name
    14.     $server
    15.     $uptime, $OfflineTime, $qlQuery = $null, $null, $null
    16.     if (!(Test-Connection $server -Count 2 -Quiet)){
    17.         $OfflineTime = (Get-Date).ToString('dd.MM.yyyy HH:mm:ss')
    18.         if ((sqlQuery -query "Select Server From Uptimes Where Server = '$server'").Server -eq $null){
    19.             sqlQuery -query "Insert into Uptimes (Server, Status, OfflineTime, Uptime) values ('$server', 'Offline', '$OfflineTime', $null)"
    20.         }
    21.         if ((sqlQuery -query "Select Status From Uptimes Where Server = '$server'").Status -ne 'Offline'){
    22.             $qlQuery = "Update Uptimes Set Status = 'Offline', OfflineTime = '$OfflineTime', Uptime = 'NULL' Where Server = '$server'"
    23.             sqlQuery -query $qlQuery
    24.         }
    25.     }
    26.     else
    27.     {
    28.         $Upttm = (Get-WmiObject -ComputerName $server Win32_OperatingSystem LastBootUpTime).LastBootUpTime
    29.         $uptime = $Upttm.Substring(0,4) + '.' + $Upttm.Substring(4,2) + '.' + $Upttm.Substring(6,2) + ' ' + $Upttm.Substring(8,2) + ':' + $Upttm.Substring(10,2) + ':' + $Upttm.Substring(12,2)
    30.         if ((sqlQuery -query "Select Server From Uptimes Where Server = '$server'").Server -eq $null){
    31.             sqlQuery -query "Insert into Uptimes (Server, Status, OfflineTime, Uptime) values ('$server', 'Online', 'NULL', '$uptime')"
    32.         }
    33.         if ((sqlQuery -query "Select Status From Uptimes Where Server = '$server'").Status -eq 'Offline'){
    34.             $qlQuery = "Update Uptimes Set Status = 'Online', OfflineTime = 'NULL', Uptime = '$uptime' Where Server = '$server'"
    35.             sqlQuery -query $qlQuery
    36.         }
    37.     }
    38. }
    39.  
    40. (sqlQuery -query "Select Server From Uptimes").Server | % {
    41.     if(!(Get-ADComputer -Identity $_ -Properties LastLogonDate).LastLogonDate){
    42.         sqlQuery -query "Delete From Uptimes Where Server = '$_'"
    43.     }
    44.     elseif ((Get-ADComputer -Identity $_ -Properties Enabled).Enabled -like 'False'){
    45.         sqlQuery -query "Delete From Uptimes Where Server = '$_'"
    46.     }
    47. }
     
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Средствами JavaScript обновляй страницу, если powershell-ом html-ку генеришь:
    HTML:
    1. <!DOCTYPE html>
    2. <html lang="en">
    3.   <script>
    4.     document.write((new Date()).toLocaleString());
    5.  
    6.     setTimeout(function () {
    7.       document.location.reload();
    8.     }, 1000); // 1 second
    9.   </script>
    10. </head>
    11. </html>
    12.  
     
    Mr.Toad нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.840
    Симпатии:
    1.338
    Адрес:
    Лень
    либо страницу выдавай, а в ней еще json запрос на сервер каждый n раз шлется для обновления данных
     
  4. Mr.Toad

    Mr.Toad Новичок

    С нами с:
    29 мар 2023
    Сообщения:
    7
    Симпатии:
    0
    Спасибо!
    Попробую.
     
  5. Mr.Toad

    Mr.Toad Новичок

    С нами с:
    29 мар 2023
    Сообщения:
    7
    Симпатии:
    0
    Вкорячил в свой HTML код:
    HTML:
    1.     document.write((new Date()).toLocaleString());
    2.     setTimeout(function () {
    3.       document.location.reload();
    4.     }, 1000); // 1 second
    5.   </script>
    Вроде норм!
    --- Добавлено ---
    если интересно, могу выложить весь код