The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"perl & синхронизация"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"perl & синхронизация"
Сообщение от gluxoi emailИскать по авторуВ закладки on 04-Июн-02, 15:16  (MSK)
Народ подскажите как лучше сделать синхронизацию.
Есть перл скрипт, который занимается обработкой неких данных. На обработку данных уходит от 10 сек до минуты. Во время работы скрипта может быть запущена еще одина копия скрипта. Необходимо сделать так чтоб скрипт начинал обработку данных, если только предыдущий запуск скрипта завершил обработку.
сейчас у меня сделанно следующим образом.
#в начале скрипта
$var="run";#делаем чтоб цикл while выполнился хотя один раз
while($var eq "run"){# ждем пока предыдущий скрипт завершит обработку
    open(RUN,"<runfile");
    $var=<RUN>;#запихиваем содержимое файла в переменную
    close RUN;
}
$var="run";
open(RUN,">runfile");#переписываем содержимое файла
print RUN $мфк."\n";#пишем строку "run" скрипт начал обработку
close(RUN);
#
.....
#
#в конце скрипта
$var="notrun";
open(RUN,">runfile"); #переписываем содержимое файла
print RUN $var."\n";
#пишем строку "notrun" скрипт закончил обработку
close(RUN);
Мне кажется что работать с файлами не очень хорошо. Поскольку это замедляет работу скрипта.
Может кто предложит другой способ, более "красивый";
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: perl & синхронизация"
Сообщение от Gara emailИскать по авторуВ закладки on 04-Июн-02, 17:49  (MSK)
Смысл таков. скрипт запускается кроном.
Скрипт смотрит как его зовут. потом смотри в таблице процессов их > 2 значит "выход". если процесс 1 значит мы и есть.

@a=split /\//,$0; # <- имя программы
print "My name-".$a[$#a]."\n";
$ps_stroke=qx!ps  -aux | grep $a[$#a]!;
print $ps_stroke."\n";

на тут есть некий трабл... количестко строк в результате разное.
Пока остановился на этом.  Думаю либо с grep_ом надо поиграть флагами либо с ps.
Может у тебя есть какие идеи

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: perl & синхронизация"
Сообщение от gluxoi emailИскать по авторуВ закладки on 06-Июн-02, 11:09  (MSK)
Как то про ps -ax я забыл.
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру