@Someman

Скорость копирования файлов в Ubuntu зависит от оперативной памяти?

Ubuntu Xenial, Apache/2.4.6 PHP/5.6.27
.htaccess
php_value max_execution_time 9999999
php_value memory_limit 4232M

Копирую порядка 150 файлов размером в среднем - 10кб
Копирую функцией exec("cp '$src' '$dst'", $output, $retrun_var);

Если в момент копирования в оперативную память загружены данные, скорость копирования резко падает (20мб занято - скорость копирования всех файлов порядка 10 секунд, 120мб занято - скорость копирования возрастает до 40 секунд). Функция копирования ни как не связана с этим "большим" объемом данных.

функция копирования
function copy($src, $dst) {
		$files = scandir($src);
		foreach ($files as $file)
		{
			if($file == "." || $file == "..") continue;
			
			$oldFullName = $src. DIRECTORY_SEPARATOR .$file;
			$newFullName = $dst. DIRECTORY_SEPARATOR .$file;
			
			exec("cp '$oldFullName' '$newFullName'", $output, $retrun_var);
			if($retrun_var != 0) return false;
		}

		return true;
	}
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ответы на вопрос 1
Frankenstine
@Frankenstine
Сисадмин
Вообще говоря, если оперативной памяти достаточно, то фактическая запись может осуществляться позже, чем программе будет сообщено "выполнено" (вернётся результат выполнения), так как будет использован кэш. Если же места на кэш на все записываемые данные не хватает, то возврат результата будет позже, и часть данных нужно будет записывать без кэширования, ожидая возврата результата дисковой подсистемы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы