Этот фрагмент кода не имеет большого смысла, пожалуйста, опубликуйте некоторый реальный код, уменьшенный для удобства чтения.
Более быстрая версия кода, который вы разместили, будет
$xml = '';
while ($row = mysql_fetch_row($result))
{
$xml .= '<items><test>' . implode('</test><test>', $row) . '</test></items>';
}
Как правило, использование mysql_fetch_object()
немного медленнее, чем другие параметры.
Возможно, вы пытались сделать что-то вроде этого:
$xml = '<items>';
while ($row = mysql_fetch_assoc($result))
{
$xml .= '<item>';
foreach ($row as $k => $v)
{
$xml .= '<' . $k . '>' . htmlspecialchars($v) . '</' . $v . '>';
}
$xml .= '</item>';
}
$xml .= '</items>';
Как упоминалось в другом месте, вы должны избегать значений, если вы не уверены на 100%, что никогда не будет никаких специальных символов, таких как "<" ">" или "&". Это также относится к $k
на самом деле. В сценариях такого типа обычно более эффективно использовать атрибуты XML вместо узлов.
Имея так мало информации о вашей цели, все, что мы можем сделать, это микрооптимизировать. Возможно, вам следует поработать над принципами, лежащими в основе вашего сценария? Например, вам действительно нужно сгенерировать 2000 предметов. Можете ли вы кешировать результат, вы можете кешировать что-нибудь? Разве вы не можете разбить результат на страницы и т.д. ...
Быстрое слово об использовании PHP-библиотек XML, XMLWriter обычно будет немного медленнее, чем при работе со строками. Все остальное будет заметно медленнее, чем строки.