ewg777

ewg777
Рейтинг
225
Регистрация
04.06.2007
bearman:
а мне вот интересно сразу стало. системный кеш кеширует ли информацию о существовании файла? тобишь что будет быстрее - проверять существует ли файл или время его модификации? есть счастливчики кому делать нечего и проверить не лень?)

0.0117421150208

$file  = '1.txt';
$start = microtime(1);
for ($i=0; $i < 5000; $i++) {
if (filemtime($file)) {
;
}
}
echo microtime(1) - $start;

0.021714925766

$file  = '1.txt';
$start = microtime(1);
for ($i=0; $i < 5000; $i++) {
if (file_exists($file)) {
;
}
}
echo microtime(1) - $start;

Вакуммность вопроса очевидна.

Тестировалось на EXT4 + CPU 75% под сторонние процессы

UPDATE 1kk итераций

filemtime 2.38509511948

exist 4.74010205269

vvvvv:
Не понимаю, почему большое количество строк скрипта вызывает такой панический ужас у местной публики. Может уважаемые критики читают php-код со словарем?
Скрипт логичен и понятен. Критика уместна в виде альтернативных вариантов.

Критика: обоснуйте приминение регулярок. Коды, привидённые раннее другими, видели? Что в них Вас не устраивает?

bearman:
я как динозавр, прусь по - http://habrahabr.ru/blogs/webdev/28759/

самый классный имхо метод и самый правильный :)

Что первым нашлось.

vvvvv:
Еще один вариант решения. Скрипт будет запускаться при захода первого посетителя после заданного времени суток. Можно задать несколько контрольных отметок.

$times = array('06:00', '15:00', '21:00');
$lastModified = getTimePeriod(true, $times);

if ( file_exists($filename) && filemtime($filename) > $lastModified ) {
// если файл существует и время его модификации не устарело
......................
} else {
// файл отсутствует или данные устарели
file_put_contents($filename, $var);
......................
}


function getTimePeriod($lastModified, $expires=array()){
$now = time();
if ( is_array($expires) ) {
$timestamps = array();
foreach ($expires as $k => $time) {
if ( ! is_numeric($time) ) {
$time = strtotime($time);
if ( false === $time || -1 === $time ) continue;
if ( preg_match('/^\s*\d+(?:\s*:\s*\d+){1,2}\s*$/', $expires[$k]) ) {
$timestamps[] = $time - 24*60*60;
$timestamps[] = $time + 24*60*60;
}
}
$timestamps[] = $time;
}
if ( $lastModified ) arsort($timestamps);
else asort($timestamps);
foreach ($timestamps as $time) {
if ( $lastModified && $now >= $time || ! $lastModified && $now <= $time ) {
$now = $time;
break;
}
}
}
return $lastModified ? $now : $now - time();
}

Парочку баз забыли заюзать, ну и без goto почему?

Тайтл невнимательно прочёл.

Написал простенький скриптик, который создает директорию на сервере и затем копирует туда измененный временный файл

http://www.php.net/manual/en/function.tmpfile.php

ivikk:
Подскажите, пожалуйста, где именно - в нас на сайте, на демо сайтах или у после установки у вас на сервере? У меня такая статистика никогда не проскакивала.

Войдите в адмику и вернитесь на сайт.

lunatik123:
ozmail, фраза из серии "лишь бы пиздануть"?

Баллов 8 отсыпьте.

Vendor:
Например:
Этот код лежит в файле compile.php, в главной директории хостинга, я захожу через браузер на mysite.ru/compile.php и создается файл xml, внутри которого то что я выше написал.
А про $one , $two ... и определены в этом файле, поэтому вообще не должны мешать

file_put_contents?

Всего: 3110