Перво-наперво: вам действительно нужно оптимизировать это? Это самая медленная часть в вашем случае использования? Вы использовали xdebug , чтобы проверить это? Если вы это сделали, читайте дальше:
Вы не можете реально оптимизировать первый скрипт с пользой: если вам нужен http-запрос, вам нужен http-запрос. Пропуск http-запроса может, тем не менее, повысить производительность, если это возможно (т. Е. Если первый скрипт может обращаться к тем же файлам, над которыми будет работать второй скрипт).
Что касается второго сценария: чтение всего файла в память выглядит как накладные расходы, но это незначительно, если файлы небольшие. Код выглядит очень читабельным, я бы оставил его как есть.
Однако, если ваши файлы большие, вы можете использовать fopen()
и его друзей fseek()
и fread()
# Do not forget to sanitize the file name here!
# An attacker could demand the last line of your password
# file or similar! ($fileName = '../../passwords.txt')
$filePointer = fopen($fileName, 'r');
$i = 1;
$chunkSize = 200;
# Read 200 byte chunks from the file and check if the chunk
# contains a newline
do {
fseek($filePointer, -($i * $chunkSize), SEEK_END);
$line = fread($filePointer, $i++ * $chunkSize);
} while (($pos = strrpos($line, "\n")) === false);
return substr($line, $pos + 1);