производительность — создание только новых файлов в PHP без интенсивного кода процессора

В моей кеш-системе я хочу, чтобы при запросе новой страницы выполнялась проверка, существует ли файл, а если нет, то копия сохраняется на сервере. Если он существует, то он не должен быть перезаписан

У меня проблема в том, что я могу использовать функции, предназначенные для медленной работы.

Это часть моей текущей реализации для сохранения файлов:

if (!file_exists($filename)){$h=fopen($filename,"wb");if ($h){fwrite($h,$c);fclose($h);}}

Это часть моей реализации для загрузки файлов:

if (($m=@filemtime($file)) !== false){
if ($m >= filemtime("sitemodification.file")){
$outp=file_get_contents($file);
header("Content-length:".strlen($outp),true);echo $outp;flush();exit();
}
}

То, что я хочу сделать, это заменить это на лучший набор функций, предназначенных для повышения производительности, и при этом достичь той же функциональности. Все файлы кэширования, включая sitemodification.file, находятся на виртуальном диске. Я добавил сброс перед выходом в надежде, что контент будет выводиться быстрее.

Я не могу использовать прямую адресацию памяти в это время, потому что размеры файлов, которые будут сохранены, все различны.

Есть ли набор функций, которые я могу использовать, чтобы выполнить код, который я предоставил, быстрее, по крайней мере, за несколько миллисекунд, особенно код загрузки файлов?

Я пытаюсь сократить время до первого байта.

0

Решение

Во-первых, предпочитаю is_file в file_exists и использовать file_put_contents:

if ( !is_file($filename) ) {
file_put_contents($filename,$c);
}

Затем используйте правильную функцию для этого вида работы, ReadFile:

if ( ($m = @filemtime($file)) !== false && $m >= filemtime('sitemodification.file')) {
header('Content-length:'.filesize($file));
readfile($file);
}
}

Вы должны увидеть небольшое улучшение, но имейте в виду, что доступ к файлам медленный, и вы проверяете доступ к файлам три раза перед отправкой любого содержимого.

0

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

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

По вопросам рекламы [email protected]