php: тормоза при чтении/записи файлов
Участников: 4
Страница 1 из 1
php: тормоза при чтении/записи файлов
новый хостинг, вылезли странные глюки.
Если в скрипте идет чтение/запись файлов - начинаются страшные тормоза, тестовый скрипт который читает/пишет 100 маленьких временных файлов исполняется 10-20 секунд.
Статические странички, чтение/запись mysql - все прекрасно.
В какую сторону копать - непонятно...
Если в скрипте идет чтение/запись файлов - начинаются страшные тормоза, тестовый скрипт который читает/пишет 100 маленьких временных файлов исполняется 10-20 секунд.
Статические странички, чтение/запись mysql - все прекрасно.
В какую сторону копать - непонятно...
v-met- Количество сообщений : 10
Дата регистрации : 2008-12-13
Re: php: тормоза при чтении/записи файлов
тестовый скрипт который читает/пишет 100 маленьких временных файлов исполняется 10-20 секунд.
Пример скрипта?
Ra1akr-
Количество сообщений : 9
Дата регистрации : 2008-12-13
Re: php: тормоза при чтении/записи файлов
если на страницу с этим скриптом натравить host-tracker, то среднее время ответа получается 30-40с
header("Expires: Tue, 1 Jul 2003 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
@include_once('../config.php');
function test_read_write(){
$skipped_files = array('.', '..', 'index.html', 'index.htm', '.htaccess');
$path = CACHE_PATH;
clearstatcache();
$output = '<ul>';
$files = array();
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if (in_array($file, $skipped_files)) {
continue;
} else if (is_file($path.$file) ) {
$tmp = file_get_contents($path.$file);
$output .= '<li>'.md5_file($path.$file).' / '.crc32($tmp).' / '.$file.'</li>';
$files[] = $path.$file;
if (count($files)>199){
break;
}
}
}
closedir($handle);
} else {
trigger_error("Error opening $path");
}
$output .= '</ul>';
return $output;
}
echo Date('Y-m-d H:i:s');
echo test_read_write();
echo Date('Y-m-d H:i:s');
v-met- Количество сообщений : 10
Дата регистрации : 2008-12-13
Re: php: тормоза при чтении/записи файлов
1. in_array в 60 раз медленнее array_key_exists. Преобразуй массив исключений $skipped_files для перехода на array_key_exists (значения становятся ключами).
2. 200 раз в цикле считать размер массива собранных файлов - типичный нюбский (извини ) прием. Да и я не обнаружил использования этого массива впоследствии, что есть нонсенс. Сделай итератор, инкрементируй его в цикле и проверяй его значение на предмет достижения 200.
3. Ты дважды смыкаешь файл на чтение: а) в file_get_contents, б) в md5_file. Смысл пункта б), если ты строкой выше УЖЕ получил контент файла. Вместо md5_file используй md5
4. Ты 4 раза делаешь одинаковую конкатенцию $path.$file Мелочь, но все-таки. Да, и если уж так не хочеться выносить в отдельную переменную, я бы рекомендовал преобразовать в "{$path}{$file}"
P.S. вообще, если такой функционал, даже с оптимизацией, будет выполняться при каждой загрузке страницы - хостер отключит твой аккаунт и ласково предложит пересмотреть подход Для такой задачи применение простейшего файлового кэша ускорит выполнение в сотни или тысячи раз, т.к. подсчет контрольных сумм довольно ресурсоемкие функции.
2. 200 раз в цикле считать размер массива собранных файлов - типичный нюбский (извини ) прием. Да и я не обнаружил использования этого массива впоследствии, что есть нонсенс. Сделай итератор, инкрементируй его в цикле и проверяй его значение на предмет достижения 200.
3. Ты дважды смыкаешь файл на чтение: а) в file_get_contents, б) в md5_file. Смысл пункта б), если ты строкой выше УЖЕ получил контент файла. Вместо md5_file используй md5
4. Ты 4 раза делаешь одинаковую конкатенцию $path.$file Мелочь, но все-таки. Да, и если уж так не хочеться выносить в отдельную переменную, я бы рекомендовал преобразовать в "{$path}{$file}"
P.S. вообще, если такой функционал, даже с оптимизацией, будет выполняться при каждой загрузке страницы - хостер отключит твой аккаунт и ласково предложит пересмотреть подход Для такой задачи применение простейшего файлового кэша ускорит выполнение в сотни или тысячи раз, т.к. подсчет контрольных сумм довольно ресурсоемкие функции.
ravil-
Количество сообщений : 14
Дата регистрации : 2008-12-13
Re: php: тормоза при чтении/записи файлов
перечитай тему, это тестовый скрипт, чтобы тестировать чтение/запись файлов посредством php. Тормоза - за рамками php, скрипт только для того чтобы выявить какие-именно операции тормозят.
v-met- Количество сообщений : 10
Дата регистрации : 2008-12-13
Re: php: тормоза при чтении/записи файлов
Тормоза - за рамками php, скрипт только для того чтобы выявить какие-именно операции тормозят.
то есть ЕГО же запускали на другой системе? сколько файлов в перебираемой директории?
Ra1akr-
Количество сообщений : 9
Дата регистрации : 2008-12-13
Re: php: тормоза при чтении/записи файлов
in_array в 60 раз медленнее array_key_exists
Интересная мысль. Конечно, рациональное зерно в этом есть, но не более. Кратность сильно зависит от размерности хешей.
Думаю стоит замерять время, затрачиваемое на каждый блок программы, что-то вроде:
$dt = 0;
.....
while(...){
....
$t1 = microtime(true);
$output .= '<li>'.md5_file($path.$file).' / '.crc32($tmp).' / '.$file.'</li>';
$t2 = microtime(true);
$dt += $t2-$t1;
....
}
echo $dt;
На мой взгляд, самые подозрительные места - file_get_contents, md5_file, crc32 и readdir.
Mbravo-
Количество сообщений : 8
Дата регистрации : 2008-12-13
Re: php: тормоза при чтении/записи файлов
то есть ЕГО же запускали на другой системе?
да, и время выполнения ~1-2с, тогда как на тестовой, при натравливании на скрипт host-tracker, время ответа доходит до 30-40 секунд.
количество файлов - до 1000, существенного влияния от количества файлов не замечено.
если модератор не против, тему стоит перенести или в хостинг или к сис-админам, так как проблема скорее всего, где то за рамками php, в настройках и ограничениях самой системы, но вот в каких именно - непонятно.
v-met- Количество сообщений : 10
Дата регистрации : 2008-12-13
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
» Поиск фильма по сюжету
» Таиланд Экскурсии в Паттайе, совет какую предпочесть
» Ищу фильм по описанию сюжета
» Помогите найти Фильм по описанию сюжета!
» ищу название фильма
» помогите пожалуйста найти фильм фильм про страницы библии
» Помогите пожалуйста найти фильм по описанию!
» Удивительная новость в мире социальных сетей. А что вы об этом думаете???