Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> редактируется страница в данный момент или нет, как определить ? 
V
    Опции темы
americanets
Дата 30.8.2007, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



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


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Serkys
Дата 30.8.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: нет
Всего: 22



Можно аяксом каждые 5 секунд отсылать уведомление, что страница занята. Если последнее уведомление было раньше, чем 5 секунд назад - значит страница свободна.
PM MAIL   Вверх
americanets
Дата 31.8.2007, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



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


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Serkys
Дата 31.8.2007, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: нет
Всего: 22



Нагрузка большой не будет, всего лишь апдейт одного поля в БД. А если делать 30 секунд, то информация об редактировании страницы будет устаревшей.
PM MAIL   Вверх
Mal Hack
Дата 31.8.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Что за бред?
Делает файл, куда пишется название (имя файла) страницы, которая редактируется, и делается проверка в скрипте. Все...
PM ICQ   Вверх
Serkys
Дата 31.8.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: нет
Всего: 22



Цитата(Mal Hack @  31.8.2007,  11:43 Найти цитируемый пост)
Делает файл, куда пишется название (имя файла) страницы, которая редактируется, и делается проверка в скрипте.

А если пользователь начал редактировать страницу, не закончил и закрыл браузер? Запись в файле остаётся, файл считается "на редактировании".
PM MAIL   Вверх
Mal Hack
Дата 31.8.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Цитата(Serkys @  31.8.2007,  17:06 Найти цитируемый пост)
льзователь начал редактировать страницу, не закончил и закрыл браузер? Запись в фай

писать еще и время, по истечении 10 минут считать файл активным.
А вообще поможет банальная блокировка файлов на уровне системы.
PM ICQ   Вверх
sTa1kEr
Дата 2.9.2007, 12:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Mal Hack @  31.8.2007,  20:34 Найти цитируемый пост)
А вообще поможет банальная блокировка файлов на уровне системы. 

Думаю, что с блокировкой тут не получится, т.к. после завершения процесса php блокировка спадет.

Т.к. не требуется возвращать никакие данный, ajax тоже не обязателен. Думаю оптимальным способом будет трюк с псевдокартинкой, обновляемой каждые n секунд. Скрипт к которому будет обращаться браузер за картинкой также будет предельно простым, вся его задача будет заключается в обновлении даты модификации
Код

touch("page.lock");

Все. Далее просто проверяем на существование файла и на дату модификации << текущей даты.
PM MAIL   Вверх
Serkys
Дата 2.9.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: нет
Всего: 22



sTa1kEr, хорошая идея. Попутно не подскажешь, как обновлять картинку, не обновляя саму страницу?
Mal Hack, а если редактирование длится дольше 10 минут, то могут возникнуть проблемы. Если меньше - пользователь будет ждать зря. Неужели так трудно добавить ajax?
PM MAIL   Вверх
sTa1kEr
Дата 2.9.2007, 22:44 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 11
Всего: 146



Цитата(Serkys @  2.9.2007,  21:56 Найти цитируемый пост)
Попутно не подскажешь, как обновлять картинку, не обновляя саму страницу?

Да ни чего сложного, достаточно менять свойство src
Код

<html>
<head>
<script type="text/javascript">
var timer;
function runTimer()
{
   document.getElementById("upd").src = "upd.php?rand=" + Math.random();
   timer = setTimeout("runTimer()",1000);
}
</script>
</head>
<body onload="runTimer();">
<form>
<img id="upd" src="" height="0px" width="0px" style="display: none;">
</body>
</html>

PM MAIL   Вверх
americanets
Дата 3.9.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



спасибо, сначало с базой пробовал, но слишком много запросов, делаю с файлами, проверяю время создания , если больше 62 сек то открыта, если меньше то закрыта, javascript'om вызываю скрипт раз в 60 сек чтоб дату файла менял, проблема только в том, что юзер без перезагрузки страницы не увидит в списке страниц сообщение, но пока и того что есть достаточно

еще раз спасибо


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Serkys
Дата 4.9.2007, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: нет
Всего: 22



americanetssTa1kEr предложил более удобное решение.

sTa1kEr, тогда уж интервал использовать будет логичнее:
Код

<script type="text/javascript">
runTimer();
var timer = window.setInterval("runTimer()", 1000);
function runTimer()
{
   document.getElementById("upd").src = "upd.php?rand=" + Math.random();
}
</script>

PM MAIL   Вверх
Debate
Дата 10.9.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 5.6.2005

Репутация: нет
Всего: нет



Код

    if($_GET['act'] == "editnews" && empty($_POST))
    {
        $sql_upd = "UPDATE `".$conf['db']['prefix']."news`
                 SET `editing_by` = '".$user['user_name']."'
                 WHERE `nid` = '".mysql_escape_string($_GET['edit_id'])."'";
        $db->query($sql_upd);
        $edit_id = $_GET['edit_id'];
    }
    if($_GET['act'] != "editnews" && empty($_POST) && !empty($edit_id))
    {
        $sql_upd = "UPDATE `".$conf['db']['prefix']."news`
                 SET `editing_by` = 'none'
                 WHERE `nid` = '".mysql_escape_string($edit_id)."'";
        $db->query($sql_upd);
    }


вот так попробуй.. у меня работает.. даже если просто закрыть интернет или если он обрубится
PM MAIL   Вверх
VeNICK
Дата 11.9.2007, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 11.10.2006

Репутация: нет
Всего: нет



а если попробовать писать в сессии то, что ты редактируешь и делать транзакции в случае исключений
PM MAIL   Вверх
Diesel Draft
Дата 12.9.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



VeNICK, Сессия видна только одному пользователю. То есть если кто то реагирует то только он будет про это знать. 
Можно просто замутить что то на примере сорссейва. Тебе просто надо ставить отметку в таблице, з одной стороны номер документа з другой пользователь что реагирует.


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0932 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.