Реклама на сайте Advertise with us

Знатоки ПХП, гляньте плз.

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 13.07.02
Сообщения: 3113
Рейтинг: 1817

Ссылка на сообщениеДобавлено: 28/04/06 в 18:15       Ответить с цитатойцитата 

Есть такой вот счетчик простейший:

Код:

<?
$fn="counter.txt";
$d=fopen($fn,"r");
if(!flock($d,1)) exit();
$content=fread($d,filesize($fn));
flock($d,3);
fclose($d);

$data=explode("\n",$content);
$data[0]++;
$content=implode("\n",$data);

$f=fopen($fn,"a+");
if(!flock($f,2)) exit();
fseek($f,0);
ftruncate($f,0);
fwrite($f,$content);
fflush($f);
flock($f,3);
fclose($f);
?>
далее html


Все ли тут ок?
Меня вот смущает то, что если flock не проходит то отдается exit(); и собственно пустая страница, как сделать чтобы если flock не прошел просто грузился бы "далее html" т.е. пропустить этот кусок кода, можно конечно флажок поставить и далее грузить только если есть флажок, а можно проще?, не люблю сложные вложенные if'ы.

Хорошо продается только то, что нельзя получить бесплатно!

0
 



С нами с 07.12.05
Сообщения: 48
Рейтинг: 11

Ссылка на сообщениеДобавлено: 28/04/06 в 18:24       Ответить с цитатойцитата 

попробуй так, должно работать ;)
Код:

<?
$fn="counter.txt";
$d=fopen($fn,"r");
if(flock($d,1)) {
$content=fread($d,filesize($fn));
flock($d,3);
fclose($d);

$data=explode("\n",$content);
$data[0]++;
$content=implode("\n",$data);
}

$f=fopen($fn,"a+");
if(flock($f,2)) {
fseek($f,0);
ftruncate($f,0);
fwrite($f,$content);
fflush($f);
flock($f,3);
fclose($f);
}
?>

0
 



С нами с 13.07.02
Сообщения: 3113
Рейтинг: 1817

Ссылка на сообщениеДобавлено: 28/04/06 в 18:56       Ответить с цитатойцитата 

Да, блин, дурацкий получился вопрос icon_smile.gif
А вообще как, нормальный код? ничего там не смущает?

Хорошо продается только то, что нельзя получить бесплатно!

0
 



С нами с 04.11.05
Сообщения: 178
Рейтинг: 122

Ссылка на сообщениеДобавлено: 28/04/06 в 23:05       Ответить с цитатойцитата 

бага: пока ты делаешь ++ другие пишут в этот файл.
Код:

$f='./counter.txt';
if( $fp = @fopen($f,"rb+") && flock($fp,2) )
{
   $cnt=intval(@fgets($fp));
   rewind($fp);
   fwrite($fp,++$cnt);
   fclose($fp);
}

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »