Питерская вода почти не даёт накипи, кстати.
Я перепутал EMS и UPS. В том магазе как раз UPS.
Не сработает.На обычной ОС. Пишут, что на какихто специальных многопоточных ОС - это не действует. Но как проверить я писал постом выше.
Но это всё ерунда, надо делать очередь заявок, юзер может только в очередь заявку послать, а непосредственно обрабатывает заявку независимый от юзера скрипт.
Да, это и есть. Но можно не париться, а лочить скрипт для всех. Операция не долгая, поэтому долго ждать не прийдётся.
ИМХО, не получится открыть залоченый файл -> соотв. в while будет бесконечный цикл.
Надо написать ф-юю
Lock($login){
$fp = fopen("LOG_POST/".$login.".txt","a");
if( flock( $fp, LOCK_EX )) return true;
return false;
}
и проверять не if( flock( $fp, LOCK_EX )), а if(Lock($login))
Проверить можно так:
Перед
flock($fp, LOCK_UN);
fclose($fp);
поставить sleep(10);
А тут
/* мой скрипт обрабатывается */
добавить логирование времени
Запустить несколько запросов паралельно и посмотреть в лог, одновременно скрипты отработали, или дождавшись заверщения друг друга.
$res = mysql_query( 'SELECT * FROM table_users WHERE login = "'. $login .'"' ); $row = mysql_fetch_assoc( $res ); //ставим метку на запись что она в отработке mysql_query( 'UPDATE table_users SET status="close" WHERE login="'. $login.'"' ); if( $row['status'] == 'close' ) { die( 'Данная запись в этот момент обрабатывается, повторите попытку позже' ); } //После того как код отработал mysql_query( 'UPDATE table_users SET status="open" WHERE login="'. $login.'"' );
Это неправильно. Можно мильён раз успеть получить первый запрос, до того как отработает Update.
Lock-файл значительно надёжней.
<?
$try=false;
while(!$try)
{
if(удалось заблокировать lock-файл)
$try=true;
else
sleep(); // не обязательно, в зависимости от ситуации
?>
В начало скрипта.
Многопользовательский вариант можно, файл лочки должен лочить запросы юзера, а не всей системы.
Хакерство таким образом не пройдёт, всё равно один из запросов будет первым.
ТС у вас принципиально неправильно, отправлять бабло по запросу юзера - нельзя. По запросу юзера надо формировать заявку на выдачу бабла. А выдочу бабла долджен проводить независимый от юзера скрипт (по крону, повесьте раз в минуту, только тоже с лочкой, чтоб два скрипта выдачи нельзя было запустить). При каждой выдаче происходит проверка: достаточно ли средств на балансе, если достаточно - то выдавать, если нет - не выдавать; затем удалять заявку; переходить к следующей заявке.
Блокировка файла.
Если совсем в общем случае - перед началом выполнения скрипта проверяйте, не заблокирован ли файл, если заблокирован - то ждите, пока его отпустит.
После проверки на блокировку - блокируйте файл и делайте, что надо. Как сделали - разблокируйте файл.
думаю, нет.
WinSplit Revolution круче и бесплатная, смысл точно такой же, только фич больше.
Но это не то.---------- Добавлено в 21:37 ---------- Предыдущее сообщение было в 21:36 ----------
Ну можа есть такая прога.
Помню, был аськоклиент какойто, вот он умел так делать. Отжирал себе четверть десктопа справа и висел там, никого не пуская на своё место. Не могу вспомнить что зха клиент такой.
Короче, все они двигают окна.