Как отфильтровать больший JSON-объект в PHP за меньшее время?

Итак, у меня есть объект JSON, который возвращает от 2500 до 5000 объектов, я могу фильтровать объект JSON, но это занимает от 5 до 10 секунд в зависимости от ключевого слова, которое я ищу.

Ниже приведен фрагмент кода

$jsonurl = "http://something.com/getitems.php";
$json = file_get_contents($jsonurl);
$json_output = json_decode($json);
$filteredArray = array_filter($json_output, function($obj) use ($keyword)
{
return strpos(strtolower($obj->title), strtolower($keyword));
});
foreach($filteredArray as $obj){
$date = "{$obj->pubDate}";
$date = str_replace("GMT"," GMT" ,$date);
$pBB[] = array(
'source' => "{$obj->source}",
'title' => "{$obj->title}",
'link' => "{$obj->link}",
'imgLink' => "{$obj->imgLink}",
'pubDate' => $date,
);
}
echo json_encode($pBB);

Помимо кэширования результатов есть ли другой способ повысить производительность и быстрее вернуть результаты?

заранее спасибо

2

Решение

Одна простая оптимизация: учитывая $keyword не меняется, вам не нужно звонить strtolower() каждый раз. Просто делать:

$keyword = strtolower($keyword)
$filteredArray = array_filter($json_output, function($obj) use ($keyword)
{
return strpos(strtolower($obj->title), $keyword);
});

Еще лучше, если бы вы использовали встроенную функцию для поиска без учета регистра вместо применения strtolower на обеих струнах

int stripos ( string $haystack , string $needle [, int $offset = 0 ] )
2

Другие решения

Других решений пока нет …