|
| |
|
|
| |
для: PantiL
(02.10.2006 в 01:11)
| | | И вот что я еще обнаружил, при обновлении страницы в Опере Апач создает во временном каталоге новые файлы сессий (я в шоке), хотя при этом идентфикатор выводится в браузер один и тот же. (Это на локальном компе) на хостинге вроде как нормально.
Вот пример http://tilla.net | |
| |
|
|
| |
|
|
| |
для: PantiL
(02.10.2006 в 00:42)
| | | Еще раз поклацал в Opere и в IE
Странно но разница есть
В Опере при каждом обновлении счетчик прибавляется(причем если выключить cookie то прибавляет по 2 :)), причем выполняется условие правильно
<?php
//Выполняется вот этот код
//и если для проверки ставим вот это
echo session_id();
//выводит идентификатор верно, а в базу пишет какой-то бред - добавляет новые записи(хотя они вообще не должны добавляться)
//с непонятно откуда взявшимся id
$sQueryU = "UPDATE `statistic` SET `time` = '".time()."' WHERE `sid` = '".session_id()."' LIMIT 1;";
mysql::query($sQueryU);
?>
|
В IE счетчик при обновлении страницы не прибавляется (что и должно происходить)
Какая может быть связь между браузером и выполнением скрипта на сервере | |
| |
|
|
| |
|
|
| |
для: cheops
(02.10.2006 в 00:12)
| | | В том то и дело что ошибки при запросе не возникает.
Моя обертка для функции mysql_query прерывает выполнение скрипта при возникновении ошибки
<?php
class mysql
{
//Обертка для стандартной функции mysql_query
//Делается проверка на успешность выполненного запроса
static function query($sQuery)
{
$rRes = mysql_query($sQuery);
if(mysql_errno())
{
throw new Exception(mysql_errno()."::".mysql_error());
}
else
{
return $rRes;
}
}
}
?>
|
Да и еще одно загадочное проишествие - скрипт неправильно себя ведет в Opere а в IE вроде как нормально | |
| |
|
|
| |
|
|
| |
для: PantiL
(02.10.2006 в 00:07)
| | | Проверьте что выводит функция mysql_error() после выполнения запроса? | |
| |
|
|
| |
|
|
| |
для: PantiL
(01.10.2006 в 20:34)
| | | Значит я это реализовал вот так,
Таблица в которую записую идентификаторы состоит из 3-х столбцов
sid - идентификатор
time - время записи
id_user - флаг определяющий гость или пользователь (у гостя 0 у пользователя его порядковый номер)
Далее код
<?php
//Удаляем все старые записи - чистим таблицу
//ONLINE_TIME - период времени за который происходит подсчет
$iTime = time() - ONLINE_TIME*60;
$sQueryDel = "DELETE FROM `statistic` WHERE `time`<$iTime ;";
mysql::query($sQueryDel);
//Проверка записа ли уже такой sid
$sQuerySID = "SELECT * FROM `statistic` WHERE `sid`='".session_id()."' ;";
$rResSID = mysql::query($sQuerySID);
//Если такой идентификатор есть то изменим в этой записи время на текущее
if(mysql_num_rows($rResSID))
{
$sQueryU = "UPDATE `statistic` SET `time` = '".time()."' WHERE `sid` = '".session_id()."' LIMIT 1;";
mysql::query($sQueryU);
}
else
{
//если идентификатора нет, запишем его
$sQueryI = "INSERT INTO `statistic` ( `sid` , `time` , `id_user` ) VALUES ('".session_id()."', '".time()."', '$USER->id');";
mysql::query($sQueryI);
}
?>
|
При обновлении странички счетчик пользователей постоянно прибавляет и прибавляет, хотя не должно так происходить. В таблице добавляются записи - причем непонятно вообще откуда взявшиеся идентификаторы(отличные от текущего). Запись должна добавляться если условие в коде не выполнилось, а у словие выполняется, но запись всеравно добавляется - странно | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(01.10.2006 в 20:13)
| | | Спасибо | |
| |
|
|
| |
|
|
| |
для: PantiL
(01.10.2006 в 19:29)
| | | Да, наверное, подойдет .. только нужно еще время записывать, чтобы чистить таблицу от старых записей | |
| |
|
|
| |
|
|
| | подойдет ли такой способ для решения этого вопроса?
запись идентификаторов сессии в файл или таблицу(записи естественно не повторяются, т.е. один и тот идентификатор записывается только один раз) и последующий их подсчет. | |
| |
|
|
|