Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчёт количества пользователей on-Line на сайте
 
 автор: Keyses   (19.02.2009 в 06:05)   письмо автору
 
 

подскажите пожалуйста, почему у меня при обновлении страницы $count увеличивается и в session_save_path создаётся новый файл сесии, хотя 3 минуты ещё не прошло? Есть ещё одна проблема файл с подсчётом кол-ва посетителей подключается через include, так вот те странички, которые находятся непосредственно в корневой диретории, с ними всё ок, а если переходить на уровень ниже, к примеру на http://example.com/search/index.php, то вылетают ошибки:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/my_site/search/index.php:10) in /var/www/my_site/inc_links.php on line 3
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/my_site/search/index.php:10) in /var/www/my_site/inc_links.php on line 3


Скажу сразу, что лишних пробелов у меня нет, иначе бы и на страницах в корневой директории ничего не работало.

Вот код подсчёта юзеров:
<?php
session_save_path
('/var/www/tmp');
session_start();
define("MAX_IDLE_TIME"3);
function 
getOnlineUsers(){
if (
$directory_handle opendir(session_save_path())){
    
$count 0;
    while (
false !== ($file readdir($directory_handle))){
        if(
$file != '.' && $file != '..'){
            if(
time()- fileatime(session_save_path() . "/" $file) < MAX_IDLE_TIME 60) { $count++; }
        }
    }
    
closedir($directory_handle);
    return 
$count;

else
    return 
false;
}
?>

  Ответить  
 
 автор: Valick   (19.02.2009 в 08:53)   письмо автору
 
   для: Keyses   (19.02.2009 в 06:05)
 

Скажу сразу, что лишних пробелов у меня нет
Сразу скажу, вывод в браузер до заголовков имеет место быть)
Сразу спрошу, в какой кодировке у вас файлы?

  Ответить  
 
 автор: Trianon   (19.02.2009 в 09:06)   письмо автору
 
   для: Keyses   (19.02.2009 в 06:05)
 

при чем тут пробелы? что у Вас происходит на 1...10-й строках файла search/index.php ?

  Ответить  
 
 автор: Keyses   (19.02.2009 в 11:13)   письмо автору
 
   для: Trianon   (19.02.2009 в 09:06)
 

Происходит вывод, но это не фиксит ошибку, если делать include на первой строке. Собственно говоря в корневой диретории почти все файлы подключают инклуды где-то в середине, тобишь там тоже вывод до инклуда, но всё работает, почему?
Файлы в "windows-1251". А почему может увеличиваться$count?

  Ответить  
 
 автор: Valick   (19.02.2009 в 12:36)   письмо автору
 
   для: Keyses   (19.02.2009 в 11:13)
 

все файлы подключают инклуды где-то в середине, тобишь там тоже вывод до инклуда, но всё работает, почему?
В этих файлах случайно чего-нибудь типо ob_start()?

  Ответить  
 
 автор: Keyses   (19.02.2009 в 13:34)   письмо автору
 
   для: Valick   (19.02.2009 в 12:36)
 

Нет ob_start(); там нигде нету. И вообще может проще будет сделать всё через БД и не парить себе мозг?

  Ответить  
 
 автор: Trianon   (19.02.2009 в 13:56)   письмо автору
 
   для: Keyses   (19.02.2009 в 13:34)
 

оно может быть в php.ini в виде строки Output_buffering

  Ответить  
 
 автор: cheops   (19.02.2009 в 15:19)   письмо автору
 
   для: Keyses   (19.02.2009 в 11:13)
 

>Происходит вывод, но это не фиксит ошибку, если делать include на первой строке.
Как выглядит сообщение об ошибке, если include находится на первой строке?

>Собственно говоря в корневой диретории почти все файлы подключают инклуды где-то в
>середине, тобишь там тоже вывод до инклуда, но всё работает, почему?
Разметка может скрывать вывод ошибки, если у вас не включена буферизация и вы пытаетесь отослать HTTP-заголовки после вывода в окно бразуера - всегда генерируется ошибка.

  Ответить  
 
 автор: Keyses   (19.02.2009 в 21:36)   письмо автору
 
   для: Keyses   (19.02.2009 в 06:05)
 

Всем спасибо. Решил не мучаться и прибегнуть к использованию БД

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования