Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 как избежать блокировок?  [new]
javaprog
Member

Откуда:
Сообщений: 102
есть таблицы Contact, SMS, ContactSMS. скрипт на php оправляет смс
$query = 'SELECT cs.[IdContactSms], c.[ContactPhone], s.SmsText
			FROM [ContactSms] cs  INNER JOIN [Contact] c ON cs.[IdContact]=c.[IdContact]
			INNER JOIN [SMS] s ON cs.[IdSMS]=s.[IdSMS]
			WHERE [IsSend]=0 AND s.[Status]=1 ';
$result = mssql_query($query, $mssql);

while ($row = mssql_fetch_assoc($result))
{
if ($smpp->Send($row["ContactPhone"], $sms, true))
{
$query3 = 'update ContactSms set IsSend=1 where IdContactSms='.$IdContactSms;
mssql_query($query3, $mssql);
}
}
все это выполняется в транзакции. как разрешить читать из этих 3 таблиц и запретить изменять ContactSms? скрипт выполняется часто по расписанию и вручную, а отправка может идти долго.

ms sql 2000
18 ноя 09, 09:44    [7943178]     Ответить | Цитировать Сообщить модератору
 Re: как избежать блокировок?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
А никак нельзя сделать так, чтобы процесс, отправляющий sms-ки, всегда был только один ?
18 ноя 09, 09:54    [7943240]     Ответить | Цитировать Сообщить модератору
 Re: как избежать блокировок?  [new]
javaprog
Member

Откуда:
Сообщений: 102
Паганель
А никак нельзя сделать так, чтобы процесс, отправляющий sms-ки, всегда был только один ?
нет. ручную отправку убирать нельзя.
18 ноя 09, 10:26    [7943429]     Ответить | Цитировать Сообщить модератору
 Re: как избежать блокировок?  [new]
Glory
Member

Откуда:
Сообщений: 104760
javaprog
все это выполняется в транзакции. как разрешить читать из этих 3 таблиц и запретить изменять ContactSms? скрипт выполняется часто по расписанию и вручную, а отправка может идти долго.

ms sql 2000

А зачем читать все готовые к отправке sms-ы, а отправлять по одному в цикле ?
Нужно читать, блокировать и отправлять только одно текущее sms.
18 ноя 09, 10:33    [7943471]     Ответить | Цитировать Сообщить модератору
 Re: как избежать блокировок?  [new]
javaprog
Member

Откуда:
Сообщений: 102
Glory
А зачем читать все готовые к отправке sms-ы, а отправлять по одному в цикле ?
Нужно читать, блокировать и отправлять только одно текущее sms.
не получится. есть таблица Groups и все контакты разбиты по граппам
CREATE TABLE [dbo].[Contact] (
...
	[IdGroups] [int] NOT NULL ,
...
в группах десятки и сотни контактов. смс отправляются группами.
18 ноя 09, 10:40    [7943521]     Ответить | Цитировать Сообщить модератору
 Re: как избежать блокировок?  [new]
Glory
Member

Откуда:
Сообщений: 104760
javaprog
Glory
А зачем читать все готовые к отправке sms-ы, а отправлять по одному в цикле ?
Нужно читать, блокировать и отправлять только одно текущее sms.
не получится. есть таблица Groups и все контакты разбиты по граппам
CREATE TABLE [dbo].[Contact] (
...
	[IdGroups] [int] NOT NULL ,
...
в группах десятки и сотни контактов. смс отправляются группами.

Не получится "читать по одной записи и отправлять по одному sms" ? И почему интересно ?
18 ноя 09, 10:41    [7943532]     Ответить | Цитировать Сообщить модератору
 Re: как избежать блокировок?  [new]
javaprog
Member

Откуда:
Сообщений: 102
Glory
Не получится "читать по одной записи и отправлять по одному sms" ? И почему интересно ?
если так то - да. спасибо.
18 ноя 09, 10:47    [7943570]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить