Member
Статус: Не в сети Регистрация: 07.10.2003 Откуда: Russia, Moscow
Ruberus писал(а):
2) Извесно, что чаще всего хост провайдеры ограничивают количество подключений к БД. Часто видел ситуацию когда количество подключений к БД может быть не более 1.
нафик таких провайдеров, это только для гостевух, которых и в файлах можно запихнуть.
в случае одновременного редактирования одной записи более позднее обновление затрет раннее. Это нормально, особенно если есть логи обновлений. )) Такие ситуации по логике не должны возникать часто и мешать друг другу - у пользователей обычно у каждого свои данные для РЕДАКТИРОВАНИЯ.
Если так уж надо - то добавь в таблицу поле "флаг - запрет редактирования" и снимай его по времени неактивности автора.
(случаи, когда мы редактировали один пост толпой бывали ))
Транзакции нужны для синхронности базы. Не для выполнения одного запроса.
Например, ты добавляешь новую тему, и пишешь добавить в таблицу тем, добавить в таблицу постов, и еще много чего (список последних, логи изменений, счетчик, список важных тем для пользователей - тут можно много чего наваять). В этом случае, если ты сделал два обновления из 5, данные в базе будут не совпадать. Посты без тем, темы без постов, битые ссылки и т.п. (Зависит от структуры базы, но смысл понятен?) Особенно приятно, когда чел оплатил деньги а результат оборвался.
Поэтому тут в случае ошибки все откатывается как было на начало транзакции.
Если все успешно, то транзакции не "теряются" а считаются выполненными.
зы массив $_SESSION хранится в памяти во время выполнения и на харде на время жизни. Но это неважно.
_________________ В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru
Почти нашел решение своей задачки
mysql_pconnect.
Создает постоянное подключение к БД MySQL которое не разрывается при завершении скрипта.
Минусы:
Работает только если PHP настроен как модуль Apache(или др. сервера)
Если соединение с БД уже открыто другим процессом вернет его а не новое.
Невозможно закрыть
Первый и третий минус сводит на нет все плюсы. Добавлено спустя 10 минут, 35 секунд И тут же нашел такую вещь:
"FastCGI позволяет создавать сценарии, которые запускаются вместе с сервером и постоянно находятся в оперативной памяти."
Это как раз то что нужно, т.к. хост провайдеры используют FastCGI где это можно.
Цитата:
Первый способ заключается в том, чтобы использовать PHP как CGI-оболочку. При этом PHP-интерпретатор создается и уничтожается при каждом обращении к странице (PHP-скрипту). Поскольку интерпретатор уничтожается после каждого запроса к серверу, все используемые им ресурсы (в том числе и соединение с базой данных) закрывается. Следовательно, в этом случае вы не получите ничего от использования постоянных соединений - их просто нет.
Но FastCGI не уничтожает интерпретатор PHP => не выполняются закрытия БД и очищение ресурсов =)
Осталось решить проблему с теми минусами которые я написал... Добавлено спустя 12 минут, 56 секунд P.S. А на форуме транзакции используются или нет?
Просто возник такой спонтанный вопрос =) Добавлено спустя 30 секунд P.S. А на форуме транзакции используются или нет?
Просто возник такой спонтанный вопрос =)
Member
Статус: Не в сети Регистрация: 07.10.2003 Откуда: Russia, Moscow
не вижу проблемы. ты все еще путаешь целостность базы с затиранием редактирования.
Первое решается транзакциями.
Второе - программистом, флагом рид-онли.
постоянное соединение - плохо, их слишком много и не смысла.
_________________ В поиске включайте "Искать все слова". Избегайте многоточий.
Зачем нужен разгон? http://tsc.overclockers.ru
Нет я понимаю что транзакции нужны для целосности БД в том числе В мануале же четко сказано если рассматривать таблицы типа InnoDB там все действия осуществляются с использованием транзакций. Просто каждое выполненое действие идет как отдельная транзакция. В модели транзакций InnoDB возможно использовать блокировку. Т.е. транзакции можно применить для целосности данных и при этом же выполнить разделяющие функции. В мануале по этому поводу приведет замечательный пример:
Цитата:
В некоторых случаях использовать согласованное чтение нецелесообразно. Приведем пример. Допустим, что необходимо добавить новую строку в таблицу CHILD, предварительно убедившись, что для нее имеется родительская строка в таблице PARENT.
Предположим, что для чтения таблицы PARENT было использовано согласованное чтение, и в таблице была обнаружена родительская строка. Можно ли теперь безопасно добавить дочернюю строку в таблицу CHILD? Нет, потому что в это время другой пользователь мог без вашего ведома удалить родительскую строку из таблицы PARENT.
В данной ситуации необходимо выполнить операцию SELECT в режиме блокировки, LOCK IN SHARE MODE. SELECT * FROM PARENT WHERE NAME = 'Jones' LOCK IN SHARE MODE;
Выполнение чтения в режиме совместного использования (share mode) означает, что считываются самые новые доступные данные и производится блокировка строк, чтение которых осуществляется. Если последние данные принадлежат еще не зафиксированной транзакции, мы ждем, пока транзакция не будет зафиксирована. Блокировка в режиме совместного использования не позволяет другим пользователям обновить или удалить читаемую строку. После того, как указанный выше запрос вернет родительскую строку 'Jones', мы можем безопасно добавить дочернюю строку в таблицу CHILD и зафиксировать транзакцию
Это было бы очень изящным решением =)
но увы как мне ответили в другом форуме:
"Это издержки взаимодействия сессионного (MySQL) и несессионного (HTTP) протоколов.(С)"
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
Mutant-13 писал(а):
Почему не работает код: <? $link = "date.php"; print "< а href = " $link ">View today's date</a> <br>\n"; ?> на странице просто выводит < а href = " date.php ">View today's date
Member
Статус: Не в сети Регистрация: 24.04.2007 Откуда: Новосибирск
всем привет.
задался я таким вопросом - как замутить свой rss канал? Лазил по поисковикам, ничего толкового не нашёл, точнее мне нужен скрипт на php желательно без perl, приветствуется mysql. Кто нибудь может подсказать, где можно раздобыть такой скрипт?
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
LAX Не с той стороны смотришь, сначала подумай чем RSS отличается от любого другого генерируемого документа, затем читай этот топик (или хотя бы юзай поиск)
Member
Статус: Не в сети Регистрация: 20.01.2005 Откуда: Kyiv, Ukraine
Доброго времени суток!
У меня стоит задача создать папку.
мне нужно создать папки folder1/folder2 и в папку folder2 записать файл.
Код:
<? mkdir("/folder1/folder2", 0777); ?>
как пишет книжка... но хостинг мой ругается на такое:
Код:
Warning: mkdir() [function.mkdir]: open_basedir restriction in effect. File(/folder1/folder2) is not within the allowed path(s): (/wsu/users/kks/domain.com/:/wsu/users/kks/tmp/:/usr/local/pear/) in /wsu/users/kks/domain.com/ru/upload.php on line 4
скрипт запускается из папки ru и я ожидал появления папки ru/folder1/folder2
такая конфигурация работает, но удалить потом ни folder2, ни folder1 нельзя. Пишет что операция удаления не выполнена. При изменении атрибутов этих папок пишет: "не могу изменить атрибуты удаленных папок"
Как поступить?
1. Как сделать так что бы mkdir("/folder1/folder2", 0777); работало или
2. Как сделать папки folder2 и folder1 удаляемыми через второй способ?
Member
Статус: Не в сети Регистрация: 16.04.2006 Откуда: Израиль
Почему часы на сайте, установленный на локальном компе, показывает время на час больше?
Вот код:
<?php
$seperator =":";
$hour = date("G");
$minute = date("i");
$second = date("s");
echo "<p align=right><font face=Georgia size=3 color=#ffffff>","$hour$seperator$minute$seperator$second","<br>";
$mont = array("Января","Февраля","Марта","Апреля","Мая","Июня","Июля","Августа","Сентября","Октября","Ноября","Декабря");
$dni = array("Воскресение","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота");
$today = getdate();
echo $dni[$today["wday"]].date(" - d ").$mont[date("m")-1].date(", Y"),"</font></p>"?>
Ответы типа, сними галочку с зимнего времени, можете оставить при себе. Спасибо.
_________________ человек на 80% состоит из жидкости, многие из тормозной...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения