Использует сон php () функция хорошая идея подавить загрузку ЦП с тяжелым сценарием?

Здесь есть несколько вопросов, сначала свидание.

вы не сможете получить фактическую дату / время из этой строки -> "new Date(2019, 3, 26, 16, 13, 15)"
без использования метода eval, который я бы не рекомендовал.

Кроме того, в javascript, при использовании этого конкретного конструктора даты,
месяц основан на нуле, означая -> January = 0

как таковой, вышеуказанная дата будет выглядеть как 26 апреля , я думаю, что вы хотите 26 марта .

вот доказательство (запустите следующий фрагмент) ...

var testDate = eval("new Date(2019, 3, 26, 16, 13, 15)");
console.log(testDate);

рекомендуют изменить формат на - -> 3/26/2019 16:13:15
{date: "3/26/2019 16:13:15", ifDesc: "lo", ifInOctets: "2147483647"}
затем преобразуйте в datetime в javascript -> new Date(value.date)


далее, диаграмма ожидает каждого ifDesc находиться в своем собственном столбце таблицы данных,
, как в следующей структуре ...

['Date', 'lo', 'Port1', 'Port2', 'Port6', 'img0'],
[new Date('3/26/2019 16:13:15'), 2147483647, 2147483647, 2147483647, 2147483647, 906413834],

это будет трудно встроить в запрос без жесткого кодирования.

Вместо этого мы можем использовать представление данных Google, чтобы создать необходимую структуру.

передать JSON через AJAX в следующей структуре.

{date: "3/26/2019 16:13:15", ifDesc: "lo", ifInOctets: "2147483647"}

загрузить таблицу данных аналогично тому, что вы сделали,
нам нужно преобразовать дату и разобрать число ...

[112 ]

затем используйте следующее для создания представления данных для линейной диаграммы.
сначала он создает столбец для каждого ifDesc.

var viewColumns = [0];
var distinctLabels = data.getDistinctValues(1);
$.each(distinctLabels, function (index, label) {
  viewColumns.push({
    calc: function (dt, row) {
      if (dt.getValue(row, 1) === label) {
        return dt.getValue(row, 2);
      }
      return null;
    },
    type: 'number',
    label: label
  });
});
var view = new google.visualization.DataView(data);
view.setColumns(viewColumns);

см. Следующий рабочий фрагмент ...

google.charts.load('current', {
  packages:['corechart']
}).then(function () {
  var jsonData = [
    {date: "3/26/2019 16:13:15", ifDesc: "lo", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:13:15", ifDesc: "Port1", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:13:15", ifDesc: "Port2", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:13:16", ifDesc: "Port6", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:13:16", ifDesc: "imq0", ifInOctets: "906413834"},
    {date: "3/26/2019 16:17:31", ifDesc: "lo", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:17:49", ifDesc: "Port1", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:17:53", ifDesc: "Port2", ifInOctets: "171330279"},
    {date: "3/26/2019 16:17:57", ifDesc: "Port6", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:17:57", ifDesc: "imq0", ifInOctets: "1103910085"},
    {date: "3/26/2019 16:20:38", ifDesc: "lo", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:20:39", ifDesc: "Port1", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:20:40", ifDesc: "Port2", ifInOctets: "194386054"},
    {date: "3/26/2019 16:20:41", ifDesc: "Port6", ifInOctets: "2147483647"},
    {date: "3/26/2019 16:20:42", ifDesc: "imq0", ifInOctets: "1128562685"}
  ];

  drawInterfaceChart(jsonData, 'chart_div');

  function drawInterfaceChart(array, divR) {
    var dataSet = [];
    $.each(array, function (data, value) {
      dataSet.push([new Date(value.date), value.ifDesc, parseFloat(value.ifInOctets)]);
    });
    var data = google.visualization.arrayToDataTable(dataSet, true);

    var viewColumns = [0];
    var distinctLabels = data.getDistinctValues(1);
    $.each(distinctLabels, function (index, label) {
      viewColumns.push({
        calc: function (dt, row) {
          if (dt.getValue(row, 1) === label) {
            return dt.getValue(row, 2);
          }
          return null;
        },
        type: 'number',
        label: label
      });
    });
    var view = new google.visualization.DataView(data);
    view.setColumns(viewColumns);

    var chart = new google.visualization.LineChart(document.getElementById(divR));
    var options = {
      title: '',
      legend: {position: 'right'},
      interpolateNulls: true  // <-- add this option
    };
    chart.draw(view, options);  // <-- use view to draw chart
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>

9
задан pixeline 18 March 2009 в 17:10
поделиться

5 ответов

Если Вы выполняете php5, и он используется в CGI (а не mod_php) режим, то Вы могли рассмотреть использование proc_nice вместо этого.

Это могло позволить, "генерируют веб-сайт" команда для использования такого количества ЦП, как это хочет, в то время как никто еще не пытается использовать сайт.

6
ответ дан 4 December 2019 в 23:08
поделиться

Это зависит от того, сколько раз Вы будете называть им и как долго. Необходимо будет сбалансировать потребность к быстрому выводу по сравнению с низким использованием ЦП.

Короче говоря: да, это поможет.

0
ответ дан 4 December 2019 в 23:08
поделиться

Я думаю, что это - хорошая идея. Сон означает повторяющееся сравнение галочек, пока период не происходит. Издержки на ЦП на операции сна должны быть ниже.

0
ответ дан 4 December 2019 в 23:08
поделиться

Я просто не сделал бы этого на Рабочем сервере, шаги, которые я выполнил прежде:

  1. Арендуйте недорогой сервер PHP - или получите надлежащие настройки сервера Dev, которые копируют производство

  2. Все Динамические файлы копируются в DEV - они не должны даже быть на производстве

  3. Запустите скрипт HTMLizer - никакой сон просто не сжигает его

  4. Проверьте ouput и затем RSYNC это к живому серверу - резервное копирование живого каталога, поскольку Вы делаете это так, можно безопасно отступить

Так или иначе начиная с Кэширования / Memcaching подошел к скорости, которую я не должен был делать, это вообще - использует Кэш Платформы и Зенда Зенда, и у Вас в основном есть динамический эквивалент тому, что необходимо сделать автоматически.

1
ответ дан 4 December 2019 в 23:08
поделиться

На основе задачи я не думаю, что она поможет Вам.

Сон только действительно был бы полезен, если бы Вы были непрерывно цикличным выполнением и ожидающий ввода данных пользователем или пускового сигнала.

В этом случае для получения задания сделанный ASAP можно также опустить команду сна, таким образом уменьшив время задачи и освободив процессорное время быстрее для других процессов.

Некоторые плакаты выше могут лучше помогать Вам с оптимизацией кода.

0
ответ дан 4 December 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: