Вы можете использовать regexp парсер и форматировать события в JSON. Вот мой пример, где я читаю ввод из хвоста файла журнала (с тем же вводом, что и у вас) и вывод в stdout. Дайте мне знать.
@type stdout
Вот пример вывода -
{"timestamp": "2019-03-18 15: 56: 57.5522", "system": "HandFarm", "module": "ResolveDispatcher", "message": "начать разрешение msg: 8"}
blockquote>
Вы всегда собираетесь создать новую строку whe конкатенация двух или больше строк вместе. Это не обязательно 'плохо', но это может иметь последствия производительности в определенных сценариях (как тысячи/миллионы конкатенаций в жестком цикле). Я не парень PHP, таким образом, я не могу дать Вам, любой совет относительно семантики различных способов связать строки, но для единственной конкатенации строк (или только некоторые), просто делает это читаемым. Вы не собираетесь видеть хит производительности из небольшого числа их.
Если его действительно большая сумма текста это действительно не имеет значения.
Конкатенация строк с точкой является определенно самым быстрым из этих трех методов. Вы будете всегда создавать новую строку, нравится ли Вам это или нет. Скорее всего, самый быстрый путь был бы:
$str1 = "Hello";
$str1 .= " World";
Не помещайте их в двойные кавычки как $result = "$str1$str2";
поскольку это генерирует дополнительные издержки для парсинга символов в строке.
Если Вы собираетесь использовать это только для вывода с эхом, затем использовать функцию эха, что можно передать его несколько параметров, поскольку это не генерирует новую строку:
$str1 = "Hello";
$str2 = " World";
echo $str1, $str2;
Для получения дополнительной информации о том, как обработки PHP интерполировали строки, и конкатенация строк проверяют блог Sarah Goleman.
Поскольку другие сказали, $str1 . $str2
совершенно в порядке в большинстве случаев, кроме (больших) циклов.
Обратите внимание пропуск некоторых решений:
$output = "$str1$str2";
и для большого количества строк, можно поместить их в массив, и использование интегрируется () для вытаскивания строки из них.
О, и "добавление строк" звучит плохим, или по крайней мере неоднозначным. На большинстве языков мы предпочитаем говорить о конкатенации строк.
Это не решение для 2 строк, но когда Вы размышление о присоединении к большему количеству строк лучший способ как этот:
$tmp=srray();
for(;;) $tmp[]='some string';
$str=implode('',$tmp);
Это быстрее, чтобы создать элемент массива и присоединиться к ним внезапно, чем присоединяются к ним сотня времен.
Совет, который Вы считали, возможно, был связан с echo
функция, для которой это более быстро для использования запятых, например:
echo $str1, $str2;
Другой подход должен создать строку в переменной (например, использование. оператор), затем повторяют целую строку в конце.
Вы могли протестировать это сами использование функции микровремени (необходимо будет сделать цикл, который повторяется, например, 1,000 или 100,000 раз сделать числа значительными). Но четырех Вы отправили, первый, вероятно, будет самым быстрым. Это является также самым читаемым - другие действительно не имеют смысла программно.
Это не имеет значения, если не используется в looong цикле. В обычном внимании случаев на удобочитаемость кода, даже если Вы потеряли несколько циклов процессора.
Пример 1 и 2 подобен, я не думаю, что должно быть много различия, это было бы fastes всех. № 1 мог бы быть немного быстрее.
Пример 3 будет медленнее, поскольку sprintf формат (' %s %s') должен быть проанализирован.
Пример 4 делает замену, которая включает поиск в строке - дополнительная вещь сделать, занимает больше времени.
Но во-первых, действительно ли конкатенация представляет в виде строки, проблема производительности? Это очень маловероятно, необходимо представить код для измерения, сколько делает время это берет для выполнения его. Затем замените метод конкатенации другим и время снова.
Если Вы идентифицируете его как проблему, попытайтесь гуглить для строкового класса разработчика php (существуют некоторые, чтобы быть найденными), или запишите свое собственное.
Я не гуру PHP, однако, во многих других языках (например, Python), самый быстрый способ собрать длинную строку из множества маленьких строк - это добавить строки, которые вы хотите сконцентрировать в списке, а затем присоединить их, используя встроенный метод соединения. Например:
$result = array();
array_push("Hello,");
array_push("my");
array_push("name");
array_push("is");
array_push("John");
array_push("Doe.");
$my_string = join(" ", $result);
Если вы собираете огромную строку в узком цикле, то самый быстрый способ сделать это - добавить строку в массив, а затем присоединить массив в конце.
Примечание: Вся эта дискуссия зависит от производительности массива_push. Вам необходимо добавить свои строки в список , чтобы это было эффективно на очень больших строках. Из-за моего ограниченного доступа к php, я не уверен, доступна ли такая структура, или массив php быстро добавляет новые элементы.
.