Sitego, по идее тебе надо в этом варианте подкорректировать путь к папке с файлами, и их расширение (имена файлов писать не нужно) - папка с файлами будет сканироваться один раз, при перезаписи временного файла:
code (+/-)
// Укажи путь к папке с файлами, и их расширение
$tracks = 'music/*.mp3';
$arr = 'arr.txt';
$temp = file_exists($arr) ? file($arr, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) : [];
if (empty($temp)) {
$temp = array_map(function($item){
return explode('/', $item)[1];
}, glob($tracks));
}
shuffle($temp);
$result = $temp[0];
unset($temp[0]);
file_put_contents($arr, join(PHP_EOL, $temp));
echo $result;